Index: fusl/src/prng/rand_r.c |
diff --git a/fusl/src/prng/rand_r.c b/fusl/src/prng/rand_r.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..638614c867911a133d4a3f054c7150e28d5a4425 |
--- /dev/null |
+++ b/fusl/src/prng/rand_r.c |
@@ -0,0 +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 temper(*seed = *seed * 1103515245 + 12345)/2; |
+} |