5 # ifndef VCCC_RANDOM_SAMPLE_HPP
6 # define VCCC_RANDOM_SAMPLE_HPP
33 template<
typename T,
typename Container = std::vector<T>>
35 random_sample(T a, T b, T k, std::mt19937&& gen = std::mt19937(std::random_device{}()))
37 auto elems =
pick_k(a, b, k, gen);
38 Container result(std::make_move_iterator(elems.begin()), std::make_move_iterator(elems.end()));
39 std::shuffle(result.begin(), result.end(), gen);
43 template<
typename T,
typename Container = std::vector<T>,
typename Generator>
47 auto elems =
pick_k(a, b, k, gen);
48 Container result(std::make_move_iterator(elems.begin()), std::make_move_iterator(elems.end()));
49 std::shuffle(result.begin(), result.end(), gen);
Container random_sample(T a, T b, T k, std::mt19937 &&gen=std::mt19937(std::random_device{}()))
get shuffled random sample in [a, b], size k
Definition: sample.hpp:35
Container pick_k(T a, T b, T k, RandomGenerator &&gen)
pick k from int range [a, b] (no duplicates)
Definition: pick.hpp:34
Definition: directory.h:12