Provided by: manpages-pt-dev_20040726-4_all

**NAME**

rand, srand - random number generator.

**SYNOPSIS**

#include<stdlib.h>intrand(void);voidsrand(unsignedintseed);

**DESCRIPTION**

Therand()function returns a pseudo-random integer between 0 andRAND_MAX. Thesrand()function sets its argument as the seed for a new sequence of pseudo-random integers to be returned byrand(). These sequences are repeatable by callingsrand()with the same seed value. If no seed value is provided, therand()function is automatically seeded with a value of 1.

**RETURN** **VALUE**

Therand()function returns a value between 0 and RAND_MAX. Thesrand()returns no value.

**NOTES**

The versions ofrand()andsrand()in the Linux C Library use the same random number generator asrandom()andsrandom(), so the lower-order bits should be as random as the higher-order bits. However, on olderrand()implementations, the lower-order bits are much less random than the higher-order bits. InNumericalRecipesinC:TheArtofScientificComputing(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. TheNumericalRecipesinCbook (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'sTheArtofComputerProgramming, 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)