diff options
Diffstat (limited to 'Source/Random.cpp')
| -rw-r--r-- | Source/Random.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
| diff --git a/Source/Random.cpp b/Source/Random.cpp index 61fd30f..d9fe678 100644 --- a/Source/Random.cpp +++ b/Source/Random.cpp | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | #include <chrono> | 1 | #include <chrono> |
| 2 | #include "Random.h" | 2 | #include "Random.h" |
| 3 | 3 | ||
| 4 | int Random::s_seed = static_cast<int>(time(nullptr)); // Seed from the time in milliseconds | 4 | uint32_t Random::s_seed = static_cast<int>(time(nullptr)); // Seed from the time in milliseconds |
| 5 | 5 | ||
| 6 | void Random::SetSeed(int seed) { | 6 | void Random::SetSeed(int seed) { |
| 7 | s_seed = seed; | 7 | s_seed = seed; |
| @@ -9,6 +9,7 @@ void Random::SetSeed(int seed) { | |||
| 9 | 9 | ||
| 10 | // Returns a random integer in [min, max] | 10 | // Returns a random integer in [min, max] |
| 11 | int Random::RandInt(int min, int max) { | 11 | int Random::RandInt(int min, int max) { |
| 12 | s_seed = (214013 * s_seed + 2531011) % 2147483648; | 12 | s_seed = (214013 * s_seed + 2531011); // Implicit unsigned integer overflow |
| 13 | return (s_seed % (max - min + 1)) + min; | 13 | int32_t maskedSeed = ((s_seed >> 16) & 0x7fff); // Only use bits 16-30 |
| 14 | return (maskedSeed % (max - min + 1)) + min; | ||
| 14 | } | 15 | } |
