8#ifndef GALAXY_MATH_RANDOM_HPP_
9#define GALAXY_MATH_RANDOM_HPP_
24 template<
typename Type>
26 std::is_integral<Type>::value,
27 std::uniform_int_distribution<Type>,
28 std::conditional_t<std::is_floating_point<Type>::value, std::uniform_real_distribution<Type>,
void>>;
40 template<meta::is_arithmetic T>
42 inline T
random(
const T min,
const T max)
noexcept
44 thread_local std::random_device rd;
45 thread_local std::mt19937_64 mt {rd()};
60 ray::Vector2
random_vec2(
const ray::Vector2& min,
const ray::Vector2& max)
noexcept;
71 ray::Vector3
random_vec3(
const ray::Vector3& min,
const ray::Vector3& max)
noexcept;
82 ray::Vector4
random_vec4(
const ray::Vector4& min,
const ray::Vector4& max)
noexcept;
ray::Vector2 random_vec2(const ray::Vector2 &min, const ray::Vector2 &max) noexcept
Generate a random vec2.
ray::Vector3 random_vec3(const ray::Vector3 &min, const ray::Vector3 &max) noexcept
Generate a random vec3.
std::conditional_t< std::is_integral< Type >::value, std::uniform_int_distribution< Type >, std::conditional_t< std::is_floating_point< Type >::value, std::uniform_real_distribution< Type >, void > > conditional_distribution
Source: http://stackoverflow.com/a/32907541.
ray::Vector4 random_vec4(const ray::Vector4 &min, const ray::Vector4 &max) noexcept
Generate a random vec4.
T random(const T min, const T max) noexcept
Generate a random number of type T.