diff --git a/corsika/detail/framework/random/RNGManager.inl b/corsika/detail/framework/random/RNGManager.inl
index 575ab43b73e48efe733e2bde64a99503bce44199..1d0da48313f622e3c9b567127ed2104b15fc3029 100644
--- a/corsika/detail/framework/random/RNGManager.inl
+++ b/corsika/detail/framework/random/RNGManager.inl
@@ -8,6 +8,10 @@
 
 #pragma once
 
+#include <iterator>
+#include <random>
+#include <sstream>
+
 namespace corsika {
 
   inline void RNGManager::registerRandomStream(string_type const& pStreamName) {
@@ -48,13 +52,16 @@ namespace corsika {
 
   inline void RNGManager::seedAll(void) {
     std::random_device rd;
-    std::seed_seq sseq{rd(), rd(), rd(), rd(), rd(), rd()};
-    for (auto& entry : rngs_) {
-      std::vector<std::uint32_t> seeds(1);
-      sseq.generate(seeds.begin(), seeds.end());
-      std::uint32_t seed = seeds[0];
-      CORSIKA_LOG_TRACE("Random seed stream {} seed {}", entry.first, seed);
-      entry.second.seed(seed);
+
+    for (auto& [streamName, rng] : rngs_) {
+      std::seed_seq sseq{rd(), rd(), rd(), rd(), rd(), rd()}; // 6 really random values
+
+      // for logging collect sseq input values in string
+      std::stringstream ss;
+      sseq.param(std::ostream_iterator<int>{ss, " "});
+      CORSIKA_LOG_DEBUG("Random seed stream {} seed {}", streamName, ss.str());
+
+      rng.seed(sseq);
     }
   }