#ifndef tests_rng_483f8f25f09ae06 #define tests_rng_483f8f25f09ae06 #include #include struct rng { rng(auto s) : seed(s) , generator(seed) {} rng() : rng([] { return std::random_device{}(); }()) {} template requires std::is_integral_v T get() noexcept { union { std::array data; T v; } u; for (auto& d : u.data) { d = generator(); } return u.v; } template requires std::is_integral_v auto get() noexcept { std::array values; for (auto& value : values) { value = get(); } return values; } std::random_device::result_type seed; std::mt19937 generator; }; #endif // tests_rng_483f8f25f09ae06