27 : generator(initialize_boost_generator(seeds)){}
29 : generator(initialize_std_generator(seeds))
35 size_t sample_int(
size_t n)
38 boost::random::uniform_int_distribution<size_t> distribution(0, n - 1);
40 std::uniform_int_distribution<size_t> distribution(0, n - 1);
42 return distribution(generator);
46 double sample_double()
49 boost::random::uniform_real_distribution<double> distribution(0.0, 1.0);
51 std::uniform_real_distribution<double> distribution(0.0, 1.0);
53 return distribution(generator);
58 boost::random::mt19937 generator;
61 boost::random::mt19937 initialize_boost_generator(std::vector<int>& seeds)
64 seeds = generate_random_seeds();
66 boost::random::seed_seq seq(seeds.begin(), seeds.end());
67 return boost::random::mt19937(seq);
70 std::default_random_engine generator;
73 std::default_random_engine initialize_std_generator(std::vector<int>& seeds)
76 seeds = generate_random_seeds();
78 std::seed_seq seq(seeds.begin(), seeds.end());
79 return std::default_random_engine(seq);
84 static std::vector<int> generate_random_seeds()
86 std::random_device rd{};
87 std::vector<int> seeds(5);
89 seeds.begin(), seeds.end(), [&]() { return static_cast<int>(rd()); });