File: *manpages*,  Node: rand,  Up: (dir)



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,  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  Numeri
       cal  Recipes  in  C book (see reference above) provides an
       excellent discussion of practical random-number generation

GNU                        18 May 1995                          1

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

       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                          2

