IAP GITLAB

Skip to content
Snippets Groups Projects
Commit d0e4d802 authored by Maximilian Reininghaus's avatar Maximilian Reininghaus :vulcan:
Browse files

Merge branch '406-rngmanager-seedall-void-not-seeding-correctly' into 'master'

Resolve "RNGManager::seedAll(void) not seeding correctly"

Closes #406

See merge request !339
parents 3e361d7b 84437eb3
No related branches found
No related tags found
1 merge request!339Resolve "RNGManager::seedAll(void) not seeding correctly"
Pipeline #3919 passed
...@@ -8,6 +8,10 @@ ...@@ -8,6 +8,10 @@
#pragma once #pragma once
#include <iterator>
#include <random>
#include <sstream>
namespace corsika { namespace corsika {
inline void RNGManager::registerRandomStream(string_type const& pStreamName) { inline void RNGManager::registerRandomStream(string_type const& pStreamName) {
...@@ -48,13 +52,16 @@ namespace corsika { ...@@ -48,13 +52,16 @@ namespace corsika {
inline void RNGManager::seedAll(void) { inline void RNGManager::seedAll(void) {
std::random_device rd; std::random_device rd;
std::seed_seq sseq{rd(), rd(), rd(), rd(), rd(), rd()};
for (auto& entry : rngs_) { for (auto& [streamName, rng] : rngs_) {
std::vector<std::uint32_t> seeds(1); std::seed_seq sseq{rd(), rd(), rd(), rd(), rd(), rd()}; // 6 really random values
sseq.generate(seeds.begin(), seeds.end());
std::uint32_t seed = seeds[0]; // for logging collect sseq input values in string
CORSIKA_LOG_TRACE("Random seed stream {} seed {}", entry.first, seed); std::stringstream ss;
entry.second.seed(seed); sseq.param(std::ostream_iterator<int>{ss, " "});
CORSIKA_LOG_DEBUG("Random seed stream {} seed {}", streamName, ss.str());
rng.seed(sseq);
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment