RANDOM
NAME
random, srandom, initstate, setstate - random number generator
SYNOPSIS
#include <stdlib.h>
long int random(void);
I void srandom(unsigned int seed );
I char *initstate(unsigned int seed , char * state , size_t n );
I char *setstate(char * state );
DESCRIPTION
The
R 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
R srandom ()
function sets its argument as the seed for a new
sequence of pseudo-random integers to be returned by
R random ().
These sequences are repeatable by calling
R srandom ()
with the same
seed value.
If no seed value is provided, the
R random ()
function
is automatically seeded with a value of 1.
The
R initstate ()
function allows a state array state to
be initialized for use by
R random ().
The size of the state array
n is used by
R 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 restarting at the same point.
The
R setstate ()
function changes the state array used by the
R random ()
function.
The state array state is used for
random number generation until the next call to
R initstate ()
or
R setstate ().
state must first have been initialized
using
R initstate ()
or be the result of a previous call of
R setstate ().
RETURN VALUE
The
R random ()
function returns a value between 0 and
R RAND_MAX .
The
R srandom ()
function returns no value.
The
R initstate ()
and
R setstate ()
functions return a pointer to the previous state
array, or NULL on error.
ERRORS
EINVAL
A state array of less than 8 bytes was specified to
R initstate ().
CONFORMING TO
4.3BSD, POSIX.1-2001.
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.
SEE ALSO