rand, srand - генерируют случайные числа
НАЗВАНИЕrand, srand - генерируют случайные числа
СИНТАКСИС
#include
int rand(void);
void srand(unsigned int seed);
ОПИСАНИЕ
Функция rand() возвращает псевдослучайное число в
диапазоне от нуля до RAND_MAX.
Функция srand() устанавливает свой аргумент как основу
(seed) для новой последовательности псевдослучайных целых
чисел, возвращаемых функцией rand(). Эту
последовательность можно воспроизвести. Для этого
необходимо вызвать srand() с соответствующей величиной
seed.
Если seed не установлено, то функция rand() автоматически
устанавливает его равным 1.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция rand() возвращает псевдослучайное число в
промежутке от нуля до RAND_MAX. Функция srand() не
возвращает значений.
ЗАМЕЧАНИЯ
Версия функций rand() и srand() в библиотеке С для Linux
использует тот же генератор чисел, что и в функциях ran-
dom() и srandom(), так что младшие биты в числе случайны
настолько, насколько и старшие. В то же время в старой
реализации rand() младшие биты являются гораздо менее
случайными, чем старшие
В книге Numerical Recipes in C: The Art of Scientific Com-
puting (William H. Press, Brian P. Flannery, Saul A.
Teukolsky, William T. Vetterling; New York: Cambridge Uni-
versity Press, 1992 (2nd ed., p. 277)) даны следующие
комментарии:
"Если Вы желаете получить случайное число в
промежутке от 1 до 10, Вы всегда должны
использовать старшие биты, например:
j=1+(int) (10.0*rand()/(RAND_MAX+1.0));
не следует выполнять такое действие:
j=1+(rand() % 10);
(т.е. использовать младшие биты)."
Генерация случайных чисел - это трудная тема. В книге
Numerical Recipes in C (см. ссылку выше) есть прекрасная
статья о практической генерации случайных чисел, глава
номер 7 (Random Numbers).
Если Вам необходимы основательные теоретические
рассуждения на эту тему, которые, кстати, являются в
большой степени практическими, загляните в главу #3 (Ran-
dom Numbers) классического труда Donald E. Knuth The Art
of Computer Programming, том #2 (Seminumerical Algo-
rithms), 2nd ed.; Reading, Massachusetts: Addison-Wesley
Publishing Company, 1981.
СООТВЕТСТВИЕ СТАНДАРТАМ
SVID 3, BSD 4.3, ISO 9899