initstate()

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

Прототип:

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

Аргументы:

seed
A starting point for the random-number sequence. This lets you restart the sequence at the same point.
state
The state array that you want to initialize.
size
The size, in bytes, of the state array.

Библиотека:

libc

Описание:

The initstate() initializes the given state array for future use when generating pseudo-random numbers.

This function uses the size argument to determine what type of random-number generator to use; the larger the state array, the more random the numbers. Values for the amount of state information are 8, 32, 64, 128, and 256 bytes. Other values greater than 8 bytes are rounded down to the nearest one of these values. For values smaller than 8, random() uses a simple linear congruential random number generator.

Use this function in conjunction with the following:

random()
Generate a pseudo-random number using a default state.
setstate()
Specify the state of the pseudo-random number generator.
srandom()
Set the seed used by the pseudo-random number generator.

If you haven't called initstate(), random() behaves as though you had called initstate() with a seed of 1 and a size of 128.

After initialization, you can restart a state array at a different point in one of these ways:

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

A pointer to the previous state array, or NULL if an error occurred.

Примеры:

#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 XSI

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

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

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




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