diff --git a/util/random/rng.h b/util/random/rng.h index d1355f8cac..89e0808deb 100644 --- a/util/random/rng.h +++ b/util/random/rng.h @@ -37,7 +37,7 @@ public: MersenneTwister(uint32_t seed) : index_(0) { mt_[0] = seed; for (uint32_t i = 1; i < MT_SIZE; i++) - mt_[i] = (1812433253 * (mt_[i - 1] ^ (mt_[i - 1] >> 30)) + i); + mt_[i] = (1812433253UL * (mt_[i - 1] ^ (mt_[i - 1] >> 30)) + i); } uint32_t R32() { @@ -45,8 +45,8 @@ public: gen(); uint32_t y = mt_[index_]; y ^= y >> 11; - y ^= (y << 7) & 2636928640; - y ^= (y << 15) & 4022730752; + y ^= (y << 7) & 2636928640UL; + y ^= (y << 15) & 4022730752UL; y ^= y >> 18; index_ = (index_ + 1) % MT_SIZE; return y; @@ -64,7 +64,7 @@ private: for(uint32_t i = 0; i < MT_SIZE; i++){ uint32_t y = (mt_[i] & 0x80000000) + (mt_[(i + 1) % MT_SIZE] & 0x80000000); mt_[i] = mt_[(i + 397) % MT_SIZE] ^ (y >> 1); - if (y % 2) mt_[i] ^= 2567483615; + if (y % 2) mt_[i] ^= 2567483615UL; } return; }