diff options
author | Timothy Arceri <[email protected]> | 2017-03-22 10:47:05 +1100 |
---|---|---|
committer | Timothy Arceri <[email protected]> | 2017-03-23 08:16:29 +1100 |
commit | 53660c23662edb829e6bfd54bcdc0df4688ec62b (patch) | |
tree | 88f3f160cc56b99c2cd5cb034fe0bb64b9a97472 /src/util/rand_xor.c | |
parent | e11049f2c367192dfb1540855f6571a5e29b77ec (diff) |
util: move rand_xorshift128plus() to utils
V2: pass the seed to rand_xorshift128plus() so that we can isolate
its uses.
Reviewed-by: Grazvydas Ignotas <[email protected]>
Reviewed-by: Nicolai Hähnle <[email protected]>
Diffstat (limited to 'src/util/rand_xor.c')
-rw-r--r-- | src/util/rand_xor.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/util/rand_xor.c b/src/util/rand_xor.c new file mode 100644 index 00000000000..07b4c22ee15 --- /dev/null +++ b/src/util/rand_xor.c @@ -0,0 +1,20 @@ +#include "rand_xor.h" + +/* Super fast random number generator. + * + * This rand_xorshift128plus function by Sebastiano Vigna belongs + * to the public domain. + */ +uint64_t +rand_xorshift128plus(uint64_t *seed) +{ + uint64_t *s = seed; + + uint64_t s1 = s[0]; + const uint64_t s0 = s[1]; + s[0] = s0; + s1 ^= s1 << 23; + s[1] = s1 ^ s0 ^ (s1 >> 18) ^ (s0 >> 5); + + return s[1] + s0; +} |