21 std::array<typename T::result_type, N> random_data;
22 constexpr auto gen = [](std::random_device& source) ->
typename T::result_type {
23 for (
unsigned j = 0; j < 64; j++) {
27 std::this_thread::sleep_for(std::chrono::microseconds(500));
30 throw std::runtime_error(
"Can't generate random number");
32 for (
unsigned i = 0; i < 8; i++) {
34 std::random_device source;
35 for (
auto& r : random_data)
37 std::seed_seq seed((std::seed_seq::result_type*) random_data.data(),
38 (std::seed_seq::result_type*) (random_data.data() + random_data.size()));
41 std::this_thread::sleep_for(std::chrono::microseconds(500));
44 throw std::runtime_error(
"Can't seed random seed");
54 std::array<typename T::result_type, N> random_data;
55 std::generate(random_data.begin(), random_data.end(), std::ref(source));
56 std::seed_seq seed((std::seed_seq::result_type*) random_data.data(),
57 (std::seed_seq::result_type*) (random_data.data() + random_data.size()));