|  | 
 NAME     
 |  |  |  | rand, lrand, frand, nrand, lnrand, srand, truerand, ntruerand,
    fastrand, nfastrand – random number generator 
 | 
 SYNOPSIS     
 |  |  |  | #include <u.h> #include <libc.h> 
    
    
    int     rand(void) 
    
    
    long    lrand(void) 
    
    
    double frand(void) 
    
    
    int     nrand(int val) 
    
    
    long    lnrand(long val) 
    
    
    void    srand(long seed) 
    
    
    ulong    truerand(void) 
    
    
    ulong    ntruerand(ulong val)
 #include <mp.h>
 #include <libsec.h> 
    
    
    void    genrandom(uchar *buf, int nbytes) 
    
    
    void    prng(uchar *buf, int nbytes) 
    
    
    ulong    fastrand(void) 
    
    
    ulong    nfastrand(ulong val)
 
 | 
 DESCRIPTION     
 |  |  |  | Rand returns a uniform pseudo-random number x, 0≤x<215. 
    
    
    Lrand returns a uniform long x, 0≤x<231. 
    
    
    Frand returns a uniform double x, 0.0≤x<1.0, This function calls
    lrand twice to generate a number with as many as 62 significant
    bits of mantissa. 
    
    
    Nrand returns a uniform integer x, 0≤x<val. Lnrand is the same,
    but returns a long. 
    
    
    The algorithm is additive feedback with: 
 giving a period of 230 × (2607 – 1). 
    
    
    The generators are initialized by calling srand with whatever
    you like as argument. To get a different starting value each time,|  |  |  | x[n] = (x[n-273] + x[n-607]) mod 231 | 
 will work as long as it is not called more often than once per
    second. Calling
 will initialize the generators to their starting state. 
    
    
    Truerand returns a random unsigned long read from /dev/random.
    Due to the nature of /dev/random, truerand can only return a few
    hundred bits a second. 
    
    
    Ntruerand returns a uniform random integer x, 0≤x<val≤232-1. 
    
    
    Genrandom fills a buffer with bytes from the X9.17 pseudo-random
    number generator. The X9.17 generator is seeded by 24 truly random
    bytes read from /dev/random. 
    
    
    Prng uses the native rand(3) pseudo-random number generator to
    fill the buffer. Used with srand, this function can produce a
    reproducible stream of pseudo random numbers useful in testing.
    
    
    
    Both genrandom and prng may be passed to mprand (see mp(3)). 
    
    
    Fastrand uses genrandom to return a uniform unsigned long x, 0≤x<232-1.
    
    
    
    Nfastrand uses genrandom to return a uniform unsigned long x,
    0≤x<val≤232-1.
 
 | 
 SOURCE     
 SEE ALSO     
 BUGS     
 |  |  |  | Truerand and ntruerand maintain a static file descriptor. 
    
    
    To avoid name conflicts with the underlying system, rand, lrand,
    frand, nrand, lnrand, and srand are preprocessor macros defined
    as p9rand, p9lrand, and so on; see intro(3). 
    
    
    Some versions of SunOS do not ship with /dev/random installed.
    You may have to download a patch from Sun to add it to your system. 
 | 
 |  |