RAND(3)

НАЗВАНИЕ
rand, srand - генерируют случайные числа

СИНТАКСИС
#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.

СООТВЕТСТВИЕ СТАНДАРТАМ
SVID 3, BSD 4.3, ISO 9899

СМ. ТАКЖЕ
random(3), srandom(3), initstate(3), setstate(3)