diff options
| -rw-r--r-- | src/prng/rand_r.c | 11 | 
1 files changed, 10 insertions, 1 deletions
| diff --git a/src/prng/rand_r.c b/src/prng/rand_r.c index ef26dbde..638614c8 100644 --- a/src/prng/rand_r.c +++ b/src/prng/rand_r.c @@ -1,6 +1,15 @@  #include <stdlib.h> +static unsigned temper(unsigned x) +{ +	x ^= x>>11; +	x ^= x<<7 & 0x9D2C5680; +	x ^= x<<15 & 0xEFC60000; +	x ^= x>>18; +	return x; +} +  int rand_r(unsigned *seed)  { -	return (*seed = *seed * 1103515245 + 12345)/2; +	return temper(*seed = *seed * 1103515245 + 12345)/2;  } | 
