diff options
author | John Fultz <jfultz@wolfram.com> | 2019-01-14 04:40:55 -0600 |
---|---|---|
committer | John Fultz <jfultz@wolfram.com> | 2019-01-14 04:40:55 -0600 |
commit | b2a056e91ef73892532cc4ea5d694ec226f4db8f (patch) | |
tree | 207834b24cd6297ec472781aebdafd63d0ff766f /datamanager.cpp | |
parent | 0ec9a95998fddbccac464a96b457d28f30587dca (diff) |
Resolve #75, update RNG to Mersenne-Twister.
Diffstat (limited to 'datamanager.cpp')
-rw-r--r-- | datamanager.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/datamanager.cpp b/datamanager.cpp index 445c314..32bc980 100644 --- a/datamanager.cpp +++ b/datamanager.cpp @@ -43,7 +43,9 @@ DataManager::DataManager() m_self = this; setAppDataDirectory("."); setUserDataDirectory("."); - seedRandomNumbers((int)time(NULL)); + + seed_seq session_seed = {(unsigned) random_device{}(), (unsigned) time(nullptr)}; + seedRandomNumbers(session_seed); m_alphabetParameters = new EnglishAlphabetParameters; m_evaluator = new CatchallEvaluator; @@ -176,10 +178,15 @@ string DataManager::makeDataFilename(const string &subDirectory, const string &f void DataManager::seedRandomNumbers(unsigned int seed) { - srand(seed); + m_mersenneTwisterRng.seed(seed); +} + +void DataManager::seedRandomNumbers(seed_seq& seed) +{ + m_mersenneTwisterRng.seed(seed); } -int DataManager::randomNumber() +int DataManager::randomInteger(int low, int high) { - return rand(); + return uniform_int_distribution<>(low, high)(m_mersenneTwisterRng); } |