diff --git a/TombEngine/Math/Random.cpp b/TombEngine/Math/Random.cpp index 0131624dc..a7459051f 100644 --- a/TombEngine/Math/Random.cpp +++ b/TombEngine/Math/Random.cpp @@ -8,21 +8,33 @@ namespace TEN::Math::Random { - static std::mt19937 Engine; + static auto Generator = std::mt19937(); - int GenerateInt(int low, int high) + int GenerateInt(int min, int max) { - return (Engine() / (Engine.max() / (high - low + 1) + 1) + low); + if (min >= max) + { + TENLog("Attempted to generate integer with minimum value greater than maximum value.", LogLevel::Warning); + return min; + } + + return (((Generator() / (Generator.max()) / (max - min + 1)) + 1) + min); } - float GenerateFloat(float low, float high) + float GenerateFloat(float min, float max) { - return ((high - low) * Engine() / Engine.max() + low); + if (min >= max) + { + TENLog("Attempted to generate float with minimum value greater than maximum value.", LogLevel::Warning); + return min; + } + + return ((((max - min) * Generator()) / Generator.max()) + min); } - short GenerateAngle(short low, short high) + short GenerateAngle(short min, short max) { - return (short)GenerateInt(low, high); + return (short)GenerateInt(min, min); } Vector2 GenerateDirection2D() diff --git a/TombEngine/Math/Random.h b/TombEngine/Math/Random.h index 97b783993..ef197f7c5 100644 --- a/TombEngine/Math/Random.h +++ b/TombEngine/Math/Random.h @@ -6,9 +6,9 @@ namespace TEN::Math::Random { // Value generation - int GenerateInt(int low = 0, int high = SHRT_MAX); - float GenerateFloat(float low = 0.0f, float high = 1.0f); - short GenerateAngle(short low = SHRT_MIN, short high = SHRT_MAX); + int GenerateInt(int min = 0, int max = SHRT_MAX); + float GenerateFloat(float min = 0.0f, float max = 1.0f); + short GenerateAngle(short min = SHRT_MIN, short max = SHRT_MAX); // 2D geometric generation