static void sirand()

in src/rand.c [58:80]


static void sirand(csprng* rng,unsign32 seed)
{
    /* initialise random number system */
    /* modified so that a subsequent call "stirs" in another seed value */
    /* in this way as many seed bits as desired may be used */
    int i;
    int in;
    unsign32 t;
    unsign32 m=1;
    rng->borrow=0L;
    rng->rndptr=0;
    rng->ira[0]^=seed;
    for (i=1; i<NK; i++)
    {
        /* fill initialisation vector */
        in=(NV*i)%NK;
        rng->ira[in]^=m;      /* note XOR */
        t=m;
        m=seed-m;
        seed=t;
    }
    for (i=0; i<10000; i++) sbrand(rng ); /* "warm-up" & stir the generator */
}