SPARK  0.1.0
A general purpose game engine written in C++.
Loading...
Searching...
No Matches
Random.h
1#pragma once
2#include "spark/base/Macros.h"
3
4namespace spark::lib
5{
6 template <typename T> requires std::is_floating_point_v<T>
7 T Random::Number(const T min, const T max)
8 {
9 std::uniform_real_distribution<T> distribution(min, max);
10 return distribution(s_generator);
11 }
12
13 template <typename C> requires std::ranges::range<C>
14 typename C::value_type Random::ElementInRange(const C& range)
15 {
16 SPARK_ASSERT(std::ranges::size(range) > 0 && "Cannot get a random element in an empty range.")
17
18 std::uniform_int_distribution<std::size_t> distribution(0, std::ranges::size(range) - 1);
19 return range[distribution(s_generator)];
20 }
21}