3 * Random number generation
9 static int32_t rnd_seed
= 0;
12 * Seed the pseudo-random number generator
16 void srandom ( unsigned int seed
) {
21 * Generate a pseudo-random number between 0 and 2147483647L or 2147483562?
23 * @ret rand Pseudo-random number
25 long int random ( void ) {
28 if ( ! rnd_seed
) /* Initialize linear congruential generator */
29 srandom ( currticks() );
31 /* simplified version of the LCG given in Bruce Schneier's
32 "Applied Cryptography" */
33 q
= ( rnd_seed
/ 53668 );
34 rnd_seed
= ( 40014 * ( rnd_seed
- 53668 * q
) - 12211 * q
);
36 rnd_seed
+= 2147483563L;