RandomSeedValue: RandomSeed = {121521923492};
RandomSeed :: struct {
    a: u64;
}

GetRandomU64 :: proc(s: *RandomSeed): u64 {
    x := s.a;
    x ^= x << 13;
    x ^= x >> 7;
    x ^= x << 17;
    s.a = x;
    return x;
}

GetRandomInt :: proc(min: int, max: int): int {
    random := GetRandomU64(&RandomSeedValue);
    range_size: u64 = :u64(max - min) + 1;

    result := :int(random % range_size);
    result  = result + min;
    return result;
}
