10class RandomNumberGenerator {
15 RandomNumberGenerator();
17 explicit RandomNumberGenerator(
int seed);
18 RandomNumberGenerator(
const RandomNumberGenerator&) =
delete;
19 RandomNumberGenerator& operator=(
const RandomNumberGenerator&) =
delete;
20 ~RandomNumberGenerator();
27 std::uniform_real_distribution<double> distribution(0.0, 1.0);
28 return distribution(rng);
35 std::uniform_int_distribution<int> distribution(0, bound - 1);
36 return distribution(rng);
40 typename T::const_iterator choose(
const T& vec)
42 return vec.begin() + random(vec.size());
46 typename T::iterator choose(T& vec)
48 return vec.begin() + random(vec.size());
52 void shuffle(std::vector<T>& vec)
54 std::shuffle(vec.begin(), vec.end(), rng);