5 # ifndef VCCC_RANDOM_PICK_HPP
6 # define VCCC_RANDOM_PICK_HPP
8 # include <unordered_set>
10 # include <type_traits>
32 template<
typename T,
typename Container = std::unordered_set<T>,
typename RandomGenerator>
34 pick_k(T a, T b, T k, RandomGenerator&& gen)
37 std::unordered_set<int> elems;
40 for (
auto r = b - k + 1; r <= b; ++r) {
41 auto v = std::uniform_int_distribution<>(a, r)(gen);
43 if (!elems.emplace(v).second) {
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
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35