SECTION("Using XBT_RNG_xbt")
{
simgrid::xbt::random::set_mersenne_seed(12345);
- REQUIRE_THAT(simgrid::xbt::random::exponential(25), EpsilonApprox(0.00291934352469749815));
+ REQUIRE_THAT(simgrid::xbt::random::exponential(25), EpsilonApprox(0.00291934351538427348));
REQUIRE(simgrid::xbt::random::uniform_int(1, 6) == 4);
- REQUIRE_THAT(simgrid::xbt::random::uniform_real(0, 1), EpsilonApprox(0.31637556036002933979));
- REQUIRE_THAT(simgrid::xbt::random::normal(0, 2), EpsilonApprox(1.62746784853777226587));
+ REQUIRE_THAT(simgrid::xbt::random::uniform_real(0, 1), EpsilonApprox(0.31637556043369124970));
+ REQUIRE_THAT(simgrid::xbt::random::normal(0, 2), EpsilonApprox(1.62746784745133976635));
}
SECTION("Using XBT_RNG_std")
std::mt19937 gen;
gen.seed(12345);
- simgrid::xbt::random::set_mersenne_seed(12345);
simgrid::xbt::random::set_implem_std();
+ simgrid::xbt::random::set_mersenne_seed(12345);
std::exponential_distribution<> distA(25);
std::uniform_int_distribution<> distB(1, 6);
REQUIRE_THAT(simgrid::xbt::random::uniform_real(0, 1), EpsilonApprox(distC(gen)));
REQUIRE_THAT(simgrid::xbt::random::normal(0, 2), EpsilonApprox(distD(gen)));
}
+
+ SECTION("XBT_RNG_std write to a file")
+ {
+ simgrid::xbt::random::set_implem_std();
+ simgrid::xbt::random::set_mersenne_seed(12345);
+
+ simgrid::xbt::random::exponential(25);
+ bool writtenA = simgrid::xbt::random::write_mersenne_state("rdm_state_tmp.txt");
+ double resB = simgrid::xbt::random::uniform_real(10, 20);
+ double resC = simgrid::xbt::random::normal(0, 2);
+ bool writtenB = simgrid::xbt::random::read_mersenne_state("rdm_state_tmp.txt");
+ REQUIRE(writtenA);
+ REQUIRE(writtenB);
+ REQUIRE_THAT(simgrid::xbt::random::uniform_real(10, 20), EpsilonApprox(resB));
+ REQUIRE_THAT(simgrid::xbt::random::normal(0, 2), EpsilonApprox(resC));
+ if (writtenB) {
+ std::remove("rdm_state_tmp.txt");
+ }
+ }
}