NAME

     random, srandom, initstate, setstate - random number genera-
     tor.


SYNOPSIS

     #include <stdlib.h>

     long int random(void);
     void srandom(unsigned int seed));
     char *initstate(unsigned int seed, char *state, int n
     char *setstate(char *state));


DESCRIPTION

     The random() function uses a  non-linear  additive  feedback
     random number generator employing a default table of size 31
     long integers to return successive pseudo-random numbers  in
     the  range  from  0  to RAND_MAX.  The period of this random
     number    generator    is    very    large,    approximately
     16*((2**31)-1).

     The srandom() function sets its argument as the seed  for  a
     new  sequence  of  pseudo-random  integers to be returned by
     random().  These sequences are repeatable by  calling  sran-
     dom()  with  the  same seed value.  If no seed value is pro-
     vided, the random() function is automatically seeded with  a
     value of 1.

     The initstate() function allows a state array  state  to  be
     initialized  for  use  by  random().   The size of the state
     array n is used by initstate() to decide how sophisticated a
     random number generator it should use - the larger the state
     array, the better the random numbers will be.  seed  is  the
     seed  for  the  initialization,  which  specifies a starting
     point for the random number sequence, and provides for  res-
     tarting at the same point.

     The setstate() function changes the state array used by  the
     random() function.  The state array state is used for random
     number generation until the next call to initstate() or set-
     state().  state must first have been initialized using init-
     state().


RETURN VALUE

     The  random()  function  returns  a  value  between  0   and
     RAND_MAX.   The  srandom()  function  returns no value.  The
     initstate() and setstate() functions return a pointer to the
     previous state array.


ERRORS

     EINVAL
          A state array of less than 8  bytes  was  specified  to
          initstate().


NOTES

     Current "optimal" values for the size of the state  array  n
     are  8,  32,  64,  128, and 256 bytes; other amounts will be
     rounded down to the nearest known amount.  Using less than 8
     bytes will cause an error.


CONFORMING TO

     BSD 4.3


SEE ALSO

     rand(3), srand(3)