summaryrefslogtreecommitdiff
path: root/datamanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'datamanager.cpp')
-rw-r--r--datamanager.cpp15
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);
}