blob: 7396880894dbcf439bd775583b3c3028fdc5ef2a [file] [log] [blame] [edit]
#include <random>
class Rand : public std::mt19937_64
{
public:
void seed(uint64_t x) { m_impl.seed(x); }
uint64_t u64() { return m_impl(); }
uint32_t u32() { return static_cast<uint32_t>(m_impl()); }
float f32(float start, float end)
{
return std::uniform_real_distribution<float>(start, end)(m_impl);
}
float f32(float end = 1) { return f32(0, end); }
bool boolean() { return m_impl() & 1; }
uint32_t u32(uint32_t start, uint32_t end)
{
return static_cast<uint32_t>(
std::uniform_int_distribution<uint32_t>(start, end)(m_impl));
}
private:
std::mt19937_64 m_impl;
};