RANDOM

NAME SYNOPSIS DESCRIPTION RETURN VALUE ERRORS NOTES CONFORMING TO SEE ALSO

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

**#include
** *seed***);
char *initstate(unsigned int** *seed***, char ****state***, size_t** *n***);
char *setstate(char ****state***);
**

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()** or be the result of a previous call of
**setstate()**.

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, or NULL on
error.

**EINVAL**

A state array of less than 8 bytes was specified to
**initstate()**.

Current 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.

BSD 4.3

3 pages link to setstate(3):

This page is a man page (or other imported legacy content). We are unable to automatically determine the license status of this page.