RANDOM(3) Linux Programmer's Manual RANDOM(3)
**NAME**
random, srandom, initstate, setstate - random number gen-
erator.
**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 num-
bers 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 pro-
vides for restarting 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 **init-**
**state()** or **setstate()**. *state* must first have been ini-
tialized using **initstate()**.
**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)
GNU March 28, 1993 1