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-и байтов приводит к ошибке.