35 std::array<typename T::result_type, N> random_data;
36 constexpr auto gen = [](std::random_device& source) ->
typename T::result_type {
37 for (
unsigned j=0; j<64; j++) {
41 std::this_thread::sleep_for(std::chrono::microseconds(500));
44 throw std::runtime_error(
"Can't generate random number");
46 for (
unsigned i=0; i<8; i++) {
48 std::random_device source;
49 for (
auto& r : random_data)
52 (std::seed_seq::result_type*)random_data.data(),
53 (std::seed_seq::result_type*)(random_data.data() + random_data.size()));
56 std::this_thread::sleep_for(std::chrono::microseconds(500));
59 throw std::runtime_error(
"Can't seed random seed");
67 std::array<typename T::result_type, N> random_data;
68 std::generate(random_data.begin(), random_data.end(), std::ref(source));
70 (std::seed_seq::result_type*)random_data.data(),
71 (std::seed_seq::result_type*)(random_data.data() + random_data.size()));