random, srandom, initstate, setstate - генерируют случайные числа
НАЗВАНИЕrandom, srandom, initstate, setstate - генерируют
случайные числа
СИНТАКСИС
#include
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 для последующего его использования функцией ran-
dom(). Размер массива 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