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 | } |