Provided by:

manpages-pt-dev_20040726-4_all **NAME**

random, srandom, initstate, setstate - random number generator.

**SYNOPSIS**

**#include** **<stdlib.h>**
**long** **int** **random(void);**
**void** **srandom(unsigned** **int** __seed__**);**
**char** ***initstate(unsigned** **int** __seed__**,** **char** *****__state__**,** **size_t** __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 **srandom()** with the same seed value. If no
seed value is provided, 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
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 **initstate()** or **setstate()**. __state__ must first
have been initialized 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)