kostik012 Опубликовано 17 ноября, 2006 Жалоба Поделиться Опубликовано 17 ноября, 2006 Как использовать генератор случайных чисел в с++(в определенном интервале)? Знаю, что для этого применяется rand, но какую библиотеку надо подключить? А то у меня выдает ошибку rand undeclared identifier Ссылка на комментарий Поделиться на другие сайты Поделиться
Delphi Опубликовано 17 ноября, 2006 Жалоба Поделиться Опубликовано 17 ноября, 2006 Как использовать генератор случайных чисел в с++(в определенном интервале)? Знаю, что для этого применяется rand, но какую библиотеку надо подключить? А то у меня выдает ошибку rand undeclared identifier насчет библиотеки неподскажу наверно math, а чтобы в определенном диапазоне к примеру 30-78 береш rand(48)+30 один из самых простых способов Ссылка на комментарий Поделиться на другие сайты Поделиться
kostik012 Опубликовано 17 ноября, 2006 Автор Жалоба Поделиться Опубликовано 17 ноября, 2006 Так и сделал. Пишет error C2660: 'rand' : function does not take 1 parameters Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 17 ноября, 2006 Жалоба Поделиться Опубликовано 17 ноября, 2006 (изменено) kostik012: Вот для примера программка, генерирующая случайные (точнее, конечно, псевдослучайные) числа от 50 до 79 включительно (писал на DEV-C++). Выдает 10 таких чисел, для закрытия окна надо ввести 0 (или любое число). #include <iostream>#include <stdlib.h> #include <time.h> int main() { int j,k; srand( (unsigned)time( NULL ) ); for(int i=0; i<10; i++) { j=rand()%30+50; cout << j<<"\n"; } ; cout << "for exit enter 0 "; cin >> k; } P.S. Посмотрел еще раз и решил, хотя это не слишком важно, кое-что ненужное из примера выкинуть, вот его вторая версия: #include <iostream>#include <stdlib.h> #include <time.h> void main() { srand(unsigned(time(NULL))); for(int i=0; i<10; i++) cout << rand()%30+50 <<"\n"; system ("pause"); } Изменено 17 ноября, 2006 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
daff9000 Опубликовано 11 сентября, 2008 Жалоба Поделиться Опубликовано 11 сентября, 2008 Объясните кто-нибудь пожалуйста механизм работы генератора случайных чисел... Ссылка на комментарий Поделиться на другие сайты Поделиться
yuriks Опубликовано 11 сентября, 2008 Жалоба Поделиться Опубликовано 11 сентября, 2008 Там зашит конкретный алгоритм. То-есть последовательность чисел всегда будет одинаковой, все зависит только от места из которого ти начнеш. Поетому ети числа не случайные - а псевдослучайные Они просто соответствуют требованиям последовательности случайных чисел. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 11 сентября, 2008 Жалоба Поделиться Опубликовано 11 сентября, 2008 (изменено) Добавлю, что существует математическая теория функций, выдающих псевдослучайные числа. Как правило, используется так называемый линейный конгруентный метод генерации псевдослучайных чисел, потому что он самый быстрый. Каждое следующее псевдослучайное число вычисляется по предыдущему функцией x=(ax+c)%m, где a,c,m - заранее заданные константы. Чтобы еще больше приблизить статистические параметры получаемой псевдослучайной последовательности к параметрам "идеальной" чисто случайной последовательности, при этом в качестве выдаваемого псевдослучайного числа часто берутся только старшие биты результата. Выбор "хороших" констант определяется теорией, подробно теория изложена у Кнута в его трехтомнике "Искусство программирования" (фактически это учебник алгоритмов). Эти константы "зашиты" в стандартную функцию rand, в разных компиляторах они могут быть разными. Поскольку начальное значение x перед первым вызовом функции обычно нуль, последовательность псевдослучайных чисел у функции rand будет всегда одна и та же, если не менять начальное значение для rand при каждом запуске программы. Это начальное значение для rand может быть установлено отдельной функцией srand, а чтобы оно каждый раз было другим, в качестве аргумента функции srand обычно используется значение текущего времени. Изменено 11 сентября, 2008 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения