Annotation of coherent/b/lib/libc/gen/rand.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * Random number generator, of period 2 ^ 32. Returns random numbers (ints) in
        !             3:  *     the interval [0, 2^15-1].
        !             4:  * The algorithm used is a linear congruential method, where the internal
        !             5:  *     computation is done in unsigned longs (mod 2^32). The numbers from
        !             6:  *     this sequence are right shifted 17 bits so that the most random 15
        !             7:  *     bits are returned.
        !             8:  * All this is from Knuth Vol 2, 2nd ed., ch 3. The choice of multiplier
        !             9:  *     is made from the table in 3.3.4.E,  pp102.
        !            10:  */
        !            11: 
        !            12: #define        A       1664525L                /* Multiplicative generator */
        !            13: #define        C       907633387L              /* Additive generator */
        !            14: 
        !            15: 
        !            16: static long    seed    = 1;
        !            17: 
        !            18: srand(n)
        !            19: unsigned int n;
        !            20: {
        !            21:        seed = n;
        !            22: }
        !            23: 
        !            24: rand()
        !            25: {
        !            26:        seed = seed * A + C;
        !            27:        return ((seed >> 17) & 077777);
        !            28: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.