blob: 679ac942b629ee6ee2700a2d277d3753604a400a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
#include "rand_sys.h"
#define WIN32_LEAN_AND_MEAN
#define NOSERVICE
#define NOMCX
#define NOIME
#include <windows.h>
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;
}
|