2#include "spark/base/Macros.h"
6 template <
typename T>
requires std::is_floating_point_v<T>
7 T Random::Number(
const T min,
const T max)
9 std::uniform_real_distribution<T> distribution(min, max);
10 return distribution(s_generator);
13 template <
typename C>
requires std::ranges::range<C>
14 typename C::value_type Random::ElementInRange(
const C& range)
16 SPARK_ASSERT(std::ranges::size(range) > 0 &&
"Cannot get a random element in an empty range.")
18 std::uniform_int_distribution<std::
size_t> distribution(0, std::ranges::size(range) - 1);
19 return range[distribution(s_generator)];