Provided by:

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

rand, srand - random number generator.

**SYNOPSIS**

**#include** **<stdlib.h>**
**int** **rand(void);**
**void** **srand(unsigned** **int** __seed__**);**

**DESCRIPTION**

The **rand()** function returns a pseudo-random integer between 0 and
**RAND_MAX**.
The **srand()** function sets its argument as the seed for a new sequence
of pseudo-random integers to be returned by **rand()**. These sequences
are repeatable by calling **srand()** with the same seed value.
If no seed value is provided, the **rand()** function is automatically
seeded with a value of 1.

**RETURN** **VALUE**

The **rand()** function returns a value between 0 and RAND_MAX. The
**srand()** returns no value.

**NOTES**

The versions of **rand()** and **srand()** in the Linux C Library use the same
random number generator as **random()** and **srandom()**, so the lower-order
bits should be as random as the higher-order bits. However, on older
**rand()** implementations, the lower-order bits are much less random than
the higher-order bits.
In __Numerical__ __Recipes__ __in__ __C:__ __The__ __Art__ __of__ __Scientific__ __Computing__ (William H.
Press, Brian P. Flannery, Saul A. Teukolsky, William T. Vetterling; New
York: Cambridge University Press, 1992 (2nd ed., p. 277)), the
following comments are made:
"If you want to generate a random integer between 1 and 10, you
should always do it by using high-order bits, as in
j=1+(int) (10.0*rand()/(RAND_MAX+1.0));
and never by anything resembling
j=1+(rand() % 10);
(which uses lower-order bits)."
Random-number generation is a complex topic. The __Numerical__ __Recipes__ __in__
__C__ book (see reference above) provides an excellent discussion of
practical random-number generation issues in Chapter 7 (Random
Numbers).
For a more theoretical discussion which also covers many practical
issues in depth, please see Chapter 3 (Random Numbers) in Donald E.
Knuth's __The__ __Art__ __of__ __Computer__ __Programming__, volume 2 (Seminumerical
Algorithms), 2nd ed.; Reading, Massachusetts: Addison-Wesley Publishing
Company, 1981.

**CONFORMING** **TO**

SVID 3, BSD 4.3, ISO 9899

**SEE** **ALSO**

**random**(3), **srandom**(3), **initstate**(3), **setstate**(3)