1 #include <stdlib.h> 2 temper(unsigned x)3static unsigned temper(unsigned x) 4 { 5 x ^= x>>11; 6 x ^= x<<7 & 0x9D2C5680; 7 x ^= x<<15 & 0xEFC60000; 8 x ^= x>>18; 9 return x; 10 } 11 rand_r(unsigned * seed)12int rand_r(unsigned *seed) 13 { 14 return temper(*seed = *seed * 1103515245 + 12345)/2; 15 } 16