/* OOK, the Only OK generator This generator is very small, and very fast, but the low order bits aren't all that great. It's main purpose is to provide a test vector for Diehard C. I do not recommend using this generator. */ #define ulong unsigned long static ulong ook_state1 = 1; static ulong ook_state2 = 2; void seedrand_ook(ulong seed) { ook_state1 = seed | 1; ook_state2 = seed | 2; } ulong rand_ook(void) { if (ook_state1&1) { ook_state1 = (ook_state1>>1) ^ 0xEDB88320l; } else { ook_state1 = (ook_state1>>1); } ook_state2 = (ook_state2 * 69069 + 17) & 0xffffffff; return ook_state1 ^ ook_state2; }