RANDOM(3)

НАЗВАНИЕ
random, srandom, initstate, setstate - генерируют случайные числа

СИНТАКСИС
#include <stdlib.h>

long int random(void);
void srandom(unsigned int seed);
char *initstate(unsigned int seed, char *state, size_t n);
char *setstate(char *state);

ОПИСАНИЕ
Функция random() использует нелинейный возвратно-аддитивный генератор случайных чисел, используя по умолчанию таблицу из 31-ого длинного целого числа и возвращает случайное число в промежутке от нуля до RAND_MAX. Период этого генератора очень велик, приблизительно 16*((2**31)-1).

Функция srandom() устанавливает свой аргумент как "зерно" для новой последовательности псевдослучайных чисел, которые будут возвращаться функцией random(). Эта последовательность может задаваться при вызове srandom() с соответствующим значением "зерна". Если размер "зерна" не указан, функция random() автоматически устанавливает его равным единице.

Функция initstate() позволяет инициализировать массив state для последующего его использования функцией random(). Размер массива n используется initstate() для определения, как сложен необходимый для использования генератор случайных чисел. Чем больше массив, тем полученные числа будут более случайными. seed - это "зерно" последовательности для инициализации, которое определяет стартовую точку последовательности случайных чисел и позволяет повторить последовательность с той же точки.

Функция setstate() изменяет состояние массива, используемого в random(). Массив state используется для генерации случайных чисел до следующего вызова initstate() или setstate(). state должен быть инициализирован с помощью функции initstate() или результатом предыдущего вызова setstate().

ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Функция random() возвращает значение в промежутке от нуля до RAND_MAX. Функция srandom() не возвращает значений. Функция initstate() и setstate() возвращает указатель на предыдущий массив состояний, или NULL, при ошибке.

НАЙДЕННЫЕ ОШИБКИ

EINVAL
    (функции initstate() передан массив, состоящий менее чем из 8-и чисел).

ЗАМЕЧАНИЯ
В настоящее время оптимальными размерами массива n будут 8, 32, 64, 128, и 256 байтов; все остальные будут округляться до ближайшего известного числа. Использование размера менее 8-и байтов приводит к ошибке.

СООТВЕТСТВИЕ СТАНДАРТАМ
BSD 4.3

СМ. ТАКЖЕ
rand(3), srand(3)