This documentation is automatically generated by online-judge-tools/verification-helper
#include "src/utils/rand/rng.hpp"
#pragma once
/**
* @file rng.hpp
* @brief Random Number Generator
*/
#include <random>
namespace workspace {
template <typename _Arithmetic>
using uniform_distribution = typename std::conditional<
std::is_integral<_Arithmetic>::value,
std::uniform_int_distribution<_Arithmetic>,
std::uniform_real_distribution<_Arithmetic>>::type;
template <typename _Arithmetic, class _Engine = std::mt19937>
class random_number_generator : uniform_distribution<_Arithmetic> {
using base = uniform_distribution<_Arithmetic>;
_Engine __engine;
public:
random_number_generator(_Arithmetic __min, _Arithmetic __max)
: base(__min, __max), __engine(std::random_device{}()) {}
random_number_generator(_Arithmetic __max = 1)
: random_number_generator(0, __max) {}
random_number_generator(typename base::param_type const& __param)
: base(__param), __engine(std::random_device{}()) {}
decltype(auto) operator()() noexcept { return base::operator()(__engine); }
};
} // namespace workspace
#line 2 "src/utils/rand/rng.hpp"
/**
* @file rng.hpp
* @brief Random Number Generator
*/
#include <random>
namespace workspace {
template <typename _Arithmetic>
using uniform_distribution = typename std::conditional<
std::is_integral<_Arithmetic>::value,
std::uniform_int_distribution<_Arithmetic>,
std::uniform_real_distribution<_Arithmetic>>::type;
template <typename _Arithmetic, class _Engine = std::mt19937>
class random_number_generator : uniform_distribution<_Arithmetic> {
using base = uniform_distribution<_Arithmetic>;
_Engine __engine;
public:
random_number_generator(_Arithmetic __min, _Arithmetic __max)
: base(__min, __max), __engine(std::random_device{}()) {}
random_number_generator(_Arithmetic __max = 1)
: random_number_generator(0, __max) {}
random_number_generator(typename base::param_type const& __param)
: base(__param), __engine(std::random_device{}()) {}
decltype(auto) operator()() noexcept { return base::operator()(__engine); }
};
} // namespace workspace