in src/rand.c [33:55]
static unsign32 sbrand(csprng *rng)
{
/* Marsaglia & Zaman random number generator */
int i;
int k;
unsign32 pdiff;
unsign32 t;
rng->rndptr++;
if (rng->rndptr<NK) return rng->ira[rng->rndptr];
rng->rndptr=0;
for (i=0,k=NK-NJ; i<NK; i++,k++)
{
/* calculate next NK values */
if (k==NK) k=0;
t=rng->ira[k];
pdiff=t - rng->ira[i] - rng->borrow;
if (pdiff<t) rng->borrow=0;
if (pdiff>t) rng->borrow=1;
rng->ira[i]=pdiff;
}
return rng->ira[0];
}