8#ifndef GALAXY_MATH_RANDOM_HPP_
9#define GALAXY_MATH_RANDOM_HPP_
13#include <glm/vec2.hpp>
14#include <glm/vec3.hpp>
15#include <glm/vec4.hpp>
26 template<
typename Type>
28 std::is_integral<Type>::value,
29 std::uniform_int_distribution<Type>,
30 std::conditional_t<std::is_floating_point<Type>::value, std::uniform_real_distribution<Type>,
void>>;
42 template<meta::is_arithmetic T>
44 inline T
random(
const T min,
const T max)
noexcept
46 thread_local std::random_device rd;
47 thread_local std::mt19937_64 mt {rd()};
62 glm::vec2
random_vec2(
const glm::vec2& min,
const glm::vec2& max)
noexcept;
73 glm::vec3
random_vec3(
const glm::vec3& min,
const glm::vec3& max)
noexcept;
84 glm::vec4
random_vec4(
const glm::vec4& min,
const glm::vec4& max)
noexcept;
glm::vec3 random_vec3(const glm::vec3 &min, const glm::vec3 &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.
glm::vec2 random_vec2(const glm::vec2 &min, const glm::vec2 &max) noexcept
Generate a random vec2.
glm::vec4 random_vec4(const glm::vec4 &min, const glm::vec4 &max) noexcept
Generate a random vec4.
T random(const T min, const T max) noexcept
Generate a random number of type T.