From 5c8f6e77ebb18071722454c41cc402b58218526f Mon Sep 17 00:00:00 2001 From: Maximilian Reininghaus <maximilian.reininghaus@kit.edu> Date: Thu, 23 May 2019 19:44:30 -0300 Subject: [PATCH] simple-minded seed mechanism --- Framework/Random/RNGManager.cc | 14 ++++++++++++++ Framework/Random/RNGManager.h | 8 ++++++++ 2 files changed, 22 insertions(+) diff --git a/Framework/Random/RNGManager.cc b/Framework/Random/RNGManager.cc index ddcccae37..1291dfd44 100644 --- a/Framework/Random/RNGManager.cc +++ b/Framework/Random/RNGManager.cc @@ -33,6 +33,20 @@ std::stringstream corsika::random::RNGManager::dumpState() const { return buffer; } + +void corsika::random::RNGManager::SeedAll(uint64_t vSeed) { + for (auto& entry : rngs) { entry.second.seed(vSeed++); } +} + +void corsika::random::RNGManager::SeedAll() { + std::random_device rd; + + for (auto& entry : rngs) { + std::seed_seq sseq{rd(), rd(), rd(), rd(), rd(), rd()}; + entry.second.seed(sseq); + } +} + /* void corsika::random::RNGManager::SetSeedSeq(std::string const& pStreamName, std::seed_seq const& pSeedSeq) { diff --git a/Framework/Random/RNGManager.h b/Framework/Random/RNGManager.h index da630c253..5d17a9304 100644 --- a/Framework/Random/RNGManager.h +++ b/Framework/Random/RNGManager.h @@ -61,6 +61,14 @@ namespace corsika::random { * set seed_seq of \a pStreamName to \a pSeedSeq */ // void SetSeedSeq(std::string const& pStreamName, std::seed_seq& const pSeedSeq); + + /** + * Set explicit seeds for all currently registered streams. The actual seed values + * are incremented from \a vSeed. + */ + void SeedAll(uint64_t vSeed); + + void SeedAll(); //!< seed all currently registered streams with "real" randomness }; } // namespace corsika::random -- GitLab