diff options
Diffstat (limited to 'random.c')
| -rw-r--r-- | random.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/random.c b/random.c new file mode 100644 index 0000000..c53d378 --- /dev/null +++ b/random.c @@ -0,0 +1,26 @@ +#include <SDL.h> + +static Uint64 random = 0xbee; + +void seed_rand(Uint64 seed) { + random ^= seed; +} + +Uint64 get_rand() { + random ^= random >> 7; + random ^= random << 9; + random ^= random >> 13; + return random; +} + +int rand_int() { + Uint64 rand = get_rand(); + int result; + memcpy(&result, &rand, sizeof(int)); + result = SDL_abs(result); + return result; +} + +double rand_float() { + return (get_rand() >> 11) * 0x1.0p-53; +} |
