////////////////////////////////////////////////////////////////////// // random number generator // uses table set up by rand.c extern long randomtab[], *randomjay, *randomkay; //////////////////////////////////////// // (31 bit integer) random number inline long irand() { if (++randomjay >= &randomtab[98]) randomjay -= 98; if ((randomkay = randomjay + 27) >= &randomtab[98]) randomkay -= 98; return(*randomjay ^= *randomkay); } // some useful constants: // const float two31 = 65536. * 32768.; // const float two31m1 = 65536. * 32768. - 1.; #define two31m1 2147483647. //////////////////////////////////////// // (floating) random on the interval [0, 1] inline float rand01() { return(irand() / two31m1); } //////////////////////////////////////// // (floating) random on the interval [-1, 1] inline float rand11() { return(rand01() * 2. - 1.); }