#include "Random.hpp" #include // Seed parameterless constructor with current milliseconds since epoch. CreatureLib::Core::Random::Random() : _rng(std::mt19937(duration_cast(system_clock::now().time_since_epoch()).count())) {} float CreatureLib::Core::Random::GetFloat() { return static_cast(_rng()) / (static_cast(std::mt19937::max() - std::mt19937::min()) - 0.5f); } double CreatureLib::Core::Random::GetDouble() { return static_cast(_rng()) / ((static_cast(std::mt19937::max()) - std::mt19937::min()) - 0.5); } int32_t CreatureLib::Core::Random::Get() { return static_cast(GetDouble() * static_cast(std::numeric_limits::max())); } int32_t CreatureLib::Core::Random::Get(int32_t max) { return static_cast(GetDouble() * static_cast(max)); } int32_t CreatureLib::Core::Random::Get(int32_t min, int32_t max) { return static_cast(GetDouble() * static_cast(max - min) + min); }