NAME
random, srandom, initstate, setstate - random number genera-
tor.
SYNOPSIS
#include <stdlib.h>
long int random(void);
void srandom(unsigned int seed));
char *initstate(unsigned int seed, char *state, int n
char *setstate(char *state));
DESCRIPTION
The random() function uses a non-linear additive feedback
random number generator employing a default table of size 31
long integers to return successive pseudo-random numbers in
the range from 0 to RAND_MAX. The period of this random
number generator is very large, approximately
16*((2**31)-1).
The srandom() function sets its argument as the seed for a
new sequence of pseudo-random integers to be returned by
random(). These sequences are repeatable by calling sran-
dom() with the same seed value. If no seed value is pro-
vided, the random() function is automatically seeded with a
value of 1.
The initstate() function allows a state array state to be
initialized for use by random(). The size of the state
array n is used by initstate() to decide how sophisticated a
random number generator it should use - the larger the state
array, the better the random numbers will be. seed is the
seed for the initialization, which specifies a starting
point for the random number sequence, and provides for res-
tarting at the same point.
The setstate() function changes the state array used by the
random() function. The state array state is used for random
number generation until the next call to initstate() or set-
state(). state must first have been initialized using init-
state().
RETURN VALUE
The random() function returns a value between 0 and
RAND_MAX. The srandom() function returns no value. The
initstate() and setstate() functions return a pointer to the
previous state array.
ERRORS
EINVAL
A state array of less than 8 bytes was specified to
initstate().
NOTES
Current "optimal" values for the size of the state array n
are 8, 32, 64, 128, and 256 bytes; other amounts will be
rounded down to the nearest known amount. Using less than 8
bytes will cause an error.
CONFORMING TO
BSD 4.3
SEE ALSO
rand(3), srand(3)