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

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 auto-
       matically 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 sran-
       dom(),  so the lower-order bits should be as random as the
       higher-order bits.  However, on older  rand()  implementa-
       tions,  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,  1990 (1st ed, p. 207)), the following comments are
       made:
              "If you want to generate a random integer between 1
              and 10, you should always do it by

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

              and never by anything resembling

                     j=1+((int) (1000000.0*rand()) % 10);

              (which uses lower-order bits)."

       Random-number  generation is a complex topic.  The Numeri-
       cal 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 Program-
       ming,  volume 2 (Seminumerical Algorithms), 2nd ed.; Read-
       ing,  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)

GNU                        18 May 1995                          1