Revert Range(s32,s32) change (causes segfault do to improper results)

This commit is contained in:
Phillip Stephens 2016-07-02 23:46:18 -07:00
parent 2e784a1941
commit 92e1865db4
1 changed files with 6 additions and 3 deletions

View File

@ -43,8 +43,11 @@ public:
inline s32 Range(s32 min, s32 max) inline s32 Range(s32 min, s32 max)
{ {
const s32 rand = Next(); s32 diff = max - min;
return min + (rand / ((min - max) + 1)) - rand; s32 rand = -1;
while (rand < 0)
rand = s32((Next() << 16) | Next());
return rand % diff + min;
} }
static CRandom16* GetRandomNumber() {return g_randomNumber;} static CRandom16* GetRandomNumber() {return g_randomNumber;}
@ -58,7 +61,7 @@ class CGlobalRandom
static CGlobalRandom* g_currentGlobalRandom; static CGlobalRandom* g_currentGlobalRandom;
public: public:
CGlobalRandom(CRandom16& rand) CGlobalRandom(CRandom16& rand)
: m_random(rand), m_prev(g_currentGlobalRandom) : m_random(rand), m_prev(g_currentGlobalRandom)
{ {
g_currentGlobalRandom = this; g_currentGlobalRandom = this;
CRandom16::SetRandomNumber(&m_random); CRandom16::SetRandomNumber(&m_random);