#include #include "cleanbench.h" /**************************** ** RANDOM NUMBER GENERATOR ** ***************************** ** This is a second-order linear congruential random number ** generator. Its advantage is (of course) that it can be ** seeded and will thus produce repeatable sequences of ** random numbers. */ /**************************** * randnum() * ***************************** ** Second order linear congruential generator. ** Constants suggested by J. G. Skellam. ** If val==0, returns next member of sequence. ** val!=0, restart generator. */ int randnum(int val) { static int randw[2] = { 13 , 117 }; int interm; if (val != 0) { randw[0] = 13; randw[1] = 117; } interm = (randw[0] * (int)254754 + randw[1] * (int)529562) % (int)999563; randw[1] = randw[0]; randw[0] = interm; return(interm); } /**************************** * randwc() * ***************************** ** Returns signed 32-bit random modulo num. */ int randwc(int num) { return(randnum(0) % num); } /*************************** ** abs_randwc() ** **************************** ** Same as randwc(), only this routine returns only ** positive numbers. */ int abs_randwc(int num) { return abs(randwc(num)); }