From 7dffe7df840bc0081767fafde90af78ce96bf300 Mon Sep 17 00:00:00 2001 From: Uneven Prankster Date: Tue, 25 Jul 2023 09:42:54 -0300 Subject: Everyone loves random --- src/rand_sys.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/rand_sys.c (limited to 'src/rand_sys.c') diff --git a/src/rand_sys.c b/src/rand_sys.c new file mode 100644 index 0000000..679ac94 --- /dev/null +++ b/src/rand_sys.c @@ -0,0 +1,41 @@ +#include "rand_sys.h" + +#define WIN32_LEAN_AND_MEAN +#define NOSERVICE +#define NOMCX +#define NOIME +#include + +static u32 state[2]; + +void rand_seed(void) +{ + FILETIME t; + GetSystemTimeAsFileTime(&t); + + u32 val = t.dwLowDateTime; + val ^= val >> 16; + val *= 0x85ebca6b; + val ^= val >> 13; + val *= 0xc2b2ae35; + val ^= val >> 16; + + state[0] = val; + state[1] = val ^ 0x49616e42U; +} + +u32 rand_u32(void) +{ + state[0] = (state[0] << 16) + (state[0] >> 16); + state[0] += state[1]; + state[1] += state[0]; + return state[0]; +} + +i32 rand_range(i32 min, i32 max) +{ + u32 range = (u32)(max - min + 1); + u32 num = rand_u32() % range; + + return min + (i32)num; +} \ No newline at end of file -- cgit v1.2.3