24 #ifndef ARM_COMPUTE_MISC_RANDOM_H
25 #define ARM_COMPUTE_MISC_RANDOM_H
29 #include "utils/Utils.h"
32 #include <type_traits>
48 static constexpr
bool is_fp_16bit = std::is_same<T, half>::value || std::is_same<T, bfloat16>::value;
53 std::uniform_real_distribution<T>>
::type;
54 using DT =
typename std::conditional<is_integral, std::uniform_int_distribution<T>,
fp_dist>
::type;
65 : _distributions(), _selector()
68 for (
const auto &erange : exclude_ranges)
74 _distributions.emplace_back(
DT(clow, erange.first -
epsilon));
78 _distributions.emplace_back(
DT(clow, high));
79 _selector = std::uniform_int_distribution<uint32_t>(0, _distributions.size() - 1);
92 unsigned int rand_select = _selector(g);
93 return _distributions[rand_select](g);
97 std::vector<DT> _distributions;
98 std::uniform_int_distribution<uint32_t> _selector;