## table of contents

RAND(3) | Linux Programmer's Manual | RAND(3) |

# NAME¶

rand, srand - random number generator.# SYNOPSIS¶

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

# 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:

j=1+(int) (10.0*rand()/(RAND_MAX+1.0));

j=1+(rand() % 10);

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)18 May 1995 | GNU |