ISO C Random Number Functions
-----------------------------
This section describes the random number functions that are part of
the ISO C standard.
To use these facilities, you should include the header file
`stdlib.h' in your program.
- Macro: int RAND_MAX
The value of this macro is an integer constant representing the
largest value the `rand' function can return. In the GNU library,
it is `2147483647', which is the largest signed integer
representable in 32 bits. In other libraries, it may be as low as
`32767'.
- Function: int rand (void)
The `rand' function returns the next pseudo-random number in the
series. The value ranges from `0' to `RAND_MAX'.
- Function: void srand (unsigned int SEED)
This function establishes SEED as the seed for a new series of
pseudo-random numbers. If you call `rand' before a seed has been
established with `srand', it uses the value `1' as a default seed.
To produce a different pseudo-random series each time your program
is run, do `srand (time (0))'.
POSIX.1 extended the C standard functions to support reproducible
random numbers in multi-threaded programs. However, the extension is
badly designed and unsuitable for serious work.
- Function: int rand_r (unsigned int *SEED)
This function returns a random number in the range 0 to `RAND_MAX'
just as `rand' does. However, all its state is stored in the SEED
argument. This means the RNG's state can only have as many bits
as the type `unsigned int' has. This is far too few to provide a
good RNG.
If your program requires a reentrant RNG, we recommend you use the
reentrant GNU extensions to the SVID random number generator. The
POSIX.1 interface should only be used when the GNU extensions are
not available.