#include "internal.h" static uint64 xoshiro256ss(Rng *state) { uint64 *s = state->s; uint64 result = rol64(s[1] * 5, 7) * 9; uint64 t = s[1] << 17; s[2] ^= s[0]; s[3] ^= s[1]; s[1] ^= s[2]; s[0] ^= s[3]; s[2] ^= t; s[3] = rol64(s[3], 45); return result; } double rng·random(void) { uint64 r = xoshiro256ss(&rng·RNG); return (double)r / (double)UINT64_MAX; } uint64 rng·randi(int max) { uint64 r = xoshiro256ss(&rng·RNG); return r % max; }