10auto rd_gen() -> std::mt19937&;
17template<
typename R,
typename P>
22template<typename T, std::enable_if_t<is_chrono_duration<T>::value,
void*> =
nullptr>
25 std::uniform_int_distribution<int64_t> dist(min.count(), max.count());
29template<typename T, std::enable_if_t<std::is_integral<T>::value,
void*> =
nullptr>
32 std::uniform_int_distribution<T> dist(min, max);
36template<typename T, std::enable_if_t<std::is_floating_point<T>::value,
void*> =
nullptr>
39 std::uniform_real_distribution<T> dist(min, max);
46 return random_value(std::numeric_limits<T>::min(), std::numeric_limits<T>::max());
49template<typename T, std::enable_if_t<std::is_integral<T>::value,
void*> =
nullptr>
55template<typename T, std::enable_if_t<std::is_floating_point<T>::value,
void*> =
nullptr>
56inline auto compare(
const T&
a,
const T&
b, T epsilon = T(0.001)) ->
bool
58 auto diff = std::abs(
a -
b);
62 if(diff < std::max(std::abs(
a), std::abs(
b)) * epsilon)