double rand_chance() { return GetRng()->Random() * 100.0; }
uint32 rand32() { return GetRng()->BRandom(); }
double rand_norm() { return GetRng()->Random(); }
float frand(float min, float max) { ASSERT(max >= min); return float(GetRng()->Random() * (max - min) + min); }
uint32 urandms(uint32 min, uint32 max) { ASSERT(max >= min); ASSERT(INT_MAX / IN_MILLISECONDS >= max); return GetRng()->URandom(min * IN_MILLISECONDS, max * IN_MILLISECONDS); }
uint32 urand(uint32 min, uint32 max) { ASSERT(max >= min); return GetRng()->URandom(min, max); }
int32 irand(int32 min, int32 max) { ASSERT(max >= min); return int32(GetRng()->IRandom(min, max)); }
uint32 urandms(uint32 min, uint32 max) { ASSERT(max >= min); ASSERT(std::numeric_limits<uint32>::max() / Milliseconds::period::den >= max); return GetRng()->URandom(min * Milliseconds::period::den, max * Milliseconds::period::den); }