/* oldrand.c : random number generators used in old compilers/libraries */ /* Jon Mayo - PUBLIC DOMAIN - October 24, 2006 */ /* NOTICE: these pseudo-random number generators are not meant to be used in * new software, they are only for maintaining compatability with legacy * software. */ /* information from: * http://www.std.com/~franl/crypto/random-numbers.html * http://everything2.com/index.pl?node=rand() */ /* Microsoft C v4.0 implementation: * ms_srand(), ms_rand() * ANSI C 1989 rand() implementation: * ans_srand(), ans_rand() * Borland Turbo Pascal v6.0 implementation: * btp_srand(), btp_rand() */ /* current seed values */ static unsigned long ms_seed; static unsigned long ans_seed; static unsigned long btp_seed; void ms_srand(unsigned long seed) { ms_seed=seed; } unsigned short ms_rand(void) { ms_seed=(ms_seed*214013+2531011)&0x7fffffff; return (ms_seed>>16)&0x7fff; } void ans_srand(unsigned long seed) { ans_seed=seed; } unsigned ans_rand(void) { ans_seed=(1103515245*ans_seed+12345)&0x7fffffff; return ans_seed; } void btp_srand(unsigned long seed) { btp_seed=seed; } unsigned btp_rand(void) { btp_seed=(134775813*btp_seed+1); return (btp_seed>>16); }