Commit 9fef967fb9fa4eb2de94258328e74545012b1621

Authored by Jürgen Knödlseder
1 parent 444d0496

Correct random number generator seed value initialization.

The seed value initialization of the random number generator was not correct, leading always to seeds of 0, irrespectively of the specified seed value. This has been fixed.
Showing 1 changed file with 12 additions and 1 deletions
src/ctobssim/ctobssim.cpp
@@ -238,6 +238,16 @@ void ctobssim::run(void) @@ -238,6 +238,16 @@ void ctobssim::run(void)
238 log << std::endl; 238 log << std::endl;
239 } 239 }
240 240
  241 + // Write seed values into logger
  242 + if (logTerse()) {
  243 + log << std::endl;
  244 + log.header1("Seed values");
  245 + for (int i = 0; i < m_rans.size(); ++i) {
  246 + log << parformat("Seed "+str(i));
  247 + log << str(m_rans[i].seed()) << std::endl;
  248 + }
  249 + }
  250 +
241 // Write observation(s) into logger 251 // Write observation(s) into logger
242 if (logTerse()) { 252 if (logTerse()) {
243 log << std::endl; 253 log << std::endl;
@@ -469,7 +479,8 @@ void ctobssim::get_parameters(void) @@ -469,7 +479,8 @@ void ctobssim::get_parameters(void)
469 // value has not been used already for another observation. 479 // value has not been used already for another observation.
470 bool repeat = false; 480 bool repeat = false;
471 do { 481 do {
472 - new_seed = (unsigned long long int)(master.int64() * 1.0e2); 482 + new_seed = (unsigned long long int)(master.uniform() * 1.0e10) +
  483 + m_seed;
473 repeat = false; 484 repeat = false;
474 for (int j = 0; j < seeds.size(); ++j) { 485 for (int j = 0; j < seeds.size(); ++j) {
475 if (new_seed == seeds[j]) { 486 if (new_seed == seeds[j]) {