12 template <
typename RandomGenerator = std::default_random_engine>
20 template <
typename Iter>
23 std::uniform_int_distribution<> dis(0, std::distance(start, end) - 1);
24 std::advance(start, dis(
gen_));
29 template <
typename Iter>
36 template <
typename Container>
37 auto operator()(
const Container& c) -> decltype(*std::begin(c))
39 return *
select(std::begin(c), std::end(c));
43 template <
typename Container>
44 auto pop(Container& c) ->
typename Container::value_type
46 auto i =
select(std::begin(c), std::end(c));
57 template <
typename RandomGenerator = std::default_random_engine>
62 template <
typename RandomGenerator>
struct random_selector< RandomGenerator > make_random_selector(const RandomGenerator &g) ATTRIBUTE_PURE
Iter operator()(Iter start, Iter end)
A randomly selected iterator in [start, end).
random_selector(const RandomGenerator &g=RandomGenerator())
auto pop(Container &c) -> typename Container::value_type
A randomly selected member of c. Remove it from c.
auto operator()(const Container &c) -> decltype(*std::begin(c))
A randomly selected member of c.
Iter select(Iter start, Iter end)
A randomly selected iterator in [start, end).