initstate()

Инициализировать генератор псевдослучайных чисел

Прототип:

#include <stdlib.h>
char * initstate( unsigned int seed,
char *state,
size_t size );

Аргументы:

seed
Начальное значение для случайной последовательности чисел. Это позволяет перезапустить последовательность с той же точки.
state
Массив состояний, который необходимо инициализировать.
size
Размер массива состояний в байтах.

Библиотека:

libc

Описание:

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

Данная функция использует аргумент size для определения типа генератора случайных чисел; чем больше размер массива state, тем более случайными будут числа. Аргумент size может принимать значения 8, 32, 64, 128, и 256 байт. Другие значения, больше 8, будут округляться до ближайшего из этих значений. Если size меньше 8, random() использует линейный конгруэнтный метод.

Данную функцию можно использовать в сочетании со следующими функциями:

random()
Генерация псевдослучайных чисел с использованием состояния по умолчанию.
setstate()
Указать набор состояний ГПСЧ.
srandom()
Установить начальное значение seed для использования ГПСЧ.

Без вызова initstate(), random() будет работать так, как при вызове initstate() с seed, равным 1 и size, равным 128.

После инициализации можно перезапустить массив состояний state с другим seed следующими способами:

Возвращаемое значение:

Указатель на предыдущий массив состояний или NULL в случае ошибки.

Примеры:

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
static char state1[32];
int main()
{
initstate( time( NULL ), state1, sizeof( state1 ) );
setstate( state1 );
printf( "%d0\n", random() );
return (EXIT_SUCCESS);
}

Классификация:

POSIX 1003.1 X/Open Systems Interfaces Extension

Безопасность использования
Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Нет

Тематические ссылки:

drand48(), rand(), random(), setstate(), srand(), srandom()




Предыдущий раздел: Описание API системной библиотеки