#include <stdlib.h>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
использует тот же генератор чисел, что и в функциях random()
и srandom(), так что младшие биты в числе случайны настолько,
насколько и старшие. В то же время в старой реализации
rand()
младшие биты являются гораздо менее случайными, чем старшие
В книге
Numerical Recipes in C: The Art of Scientific Computing
(William H. Press, Brian P. Flannery, Saul A. Teukolsky, William
T. Vetterling; New York: Cambridge University 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 (Random Numbers)
классического труда Donald E. Knuth
The Art of Computer Programming,
том #2 (Seminumerical Algorithms), 2nd ed.; Reading, Massachusetts:
Addison-Wesley Publishing Company, 1981.