Provided by: freebsd-manpages_10.1~RC1-1_all bug

NAME

     arc4rand, arc4random, random, read_random, srandom — supply pseudo-random numbers

SYNOPSIS

     #include <sys/libkern.h>

     void
     srandom(u_long seed);

     u_long
     random(void);

     void
     arc4rand(void *ptr, u_int length, int reseed);

     uint32_t
     arc4random(void);

     #include <sys/random.h>

     int
     read_random(void *buffer, int count);

DESCRIPTION

     The random() function will by default produce a sequence of numbers that can be duplicated
     by calling srandom() with ‘1’ as the seed.  The srandom() function may be called with any
     arbitrary seed value to get slightly more unpredictable numbers.  It is important to
     remember that the random() function is entirely predictable, and is therefore not of use
     where knowledge of the sequence of numbers may be of benefit to an attacker.

     The arc4rand() function will return very good quality random numbers, slightly better suited
     for security-related purposes.  The random numbers from arc4rand() are seeded from the
     entropy device if it is available.  Automatic reseeds happen after a certain timeinterval
     and after a certain number of bytes have been delivered.  A forced reseed can be forced by
     passing a non-zero value in the reseed argument.

     The read_random() function is used to return entropy directly from the entropy device if it
     has been loaded.  If the entropy device is not loaded, then the buffer is filled with output
     generated by random().  The buffer is filled with no more than count bytes.  It is advised
     that read_random() is not used; instead use arc4rand()

     All the bits generated by random(), arc4rand() and read_random() are usable.  For example,
     ‘random()&01’ will produce a random binary value.

     The arc4random() is a convenience function which calls arc4rand() to return a 32 bit pseudo-
     random integer.

RETURN VALUES

     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 (2**31)−1.  The period of this random number generator is very large,
     approximately 16*((2**31)−1).

     The arc4rand() function uses the RC4 algorithm to generate successive pseudo-random bytes.
     The arc4random() function uses arc4rand() to generate pseudo-random numbers in the range
     from 0 to (2**32)−1.

     The read_random() function returns the number of bytes placed in buffer.

AUTHORS

     Dan Moschuk wrote arc4random().
     Mark R V Murray wrote read_random().