1 #include <stdlib.h> 2 3 static 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 12 int rand_r(unsigned *seed) 13 { 14 return temper(*seed = *seed * 1103515245 + 12345)/2; 15 } 16