From f5fb87f33603f99b1bc8cb991629b6c8dea623af Mon Sep 17 00:00:00 2001 From: Birunthan Mohanathas Date: Sun, 8 Dec 2013 15:06:01 +0200 Subject: [PATCH] Calc: Use std::mt19937 with a deterministic seed as the random engine --- Library/MeasureCalc.cpp | 12 ++++++++---- Library/MeasureCalc.h | 4 ---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Library/MeasureCalc.cpp b/Library/MeasureCalc.cpp index ec0b79a4..b408c035 100644 --- a/Library/MeasureCalc.cpp +++ b/Library/MeasureCalc.cpp @@ -20,12 +20,16 @@ #include "../Common/MathParser.h" #include "MeasureCalc.h" #include "Rainmeter.h" +#include const int DEFAULT_LOWER_BOUND = 0; const int DEFAULT_UPPER_BOUND = 100; -std::default_random_engine MeasureCalc::c_RandomEngine = - std::default_random_engine(std::random_device()()); +std::mt19937& GetRandomEngine() +{ + static std::unique_ptr s_Engine(new std::mt19937((uint32_t)time(0))); + return *s_Engine; +} /* ** The constructor @@ -216,7 +220,7 @@ int MeasureCalc::GetRandom() else { const std::uniform_int_distribution distribution(m_LowBound, m_HighBound); - return distribution(c_RandomEngine); + return distribution(GetRandomEngine()); } } @@ -230,5 +234,5 @@ void MeasureCalc::UpdateUniqueNumberList() m_UniqueNumbers[i] = m_LowBound + i; } - std::shuffle(m_UniqueNumbers.begin(), m_UniqueNumbers.end(), c_RandomEngine); + std::shuffle(m_UniqueNumbers.begin(), m_UniqueNumbers.end(), GetRandomEngine()); } diff --git a/Library/MeasureCalc.h b/Library/MeasureCalc.h index 5d659f33..179cd40a 100644 --- a/Library/MeasureCalc.h +++ b/Library/MeasureCalc.h @@ -20,7 +20,6 @@ #define __MEASURECALC_H__ #include "Measure.h" -#include class MeasureCalc : public Measure { @@ -51,9 +50,6 @@ private: std::vector m_UniqueNumbers; void UpdateUniqueNumberList(); - - // Uniform Random Number Generator - static std::default_random_engine c_RandomEngine; }; #endif