|
|
|
#pragma once
|
|
|
|
#include <random>
|
|
|
|
|
|
|
|
|
|
|
|
namespace Random {
|
|
|
|
extern std::mt19937 GENERATOR;
|
|
|
|
|
|
|
|
template<typename T>
|
|
|
|
T uniform(T from, T to) {
|
|
|
|
std::uniform_int_distribution<T> rand(from, to);
|
|
|
|
|
|
|
|
return rand(GENERATOR);
|
|
|
|
}
|
|
|
|
|
|
|
|
template<typename T>
|
|
|
|
T uniform_real(T from, T to) {
|
|
|
|
std::uniform_real_distribution<T> rand(from, to);
|
|
|
|
|
|
|
|
return rand(GENERATOR);
|
|
|
|
}
|
|
|
|
|
|
|
|
template<typename T>
|
|
|
|
T normal(T from, T to) {
|
|
|
|
std::normal_distribution<T> rand(from, to);
|
|
|
|
|
|
|
|
return rand(GENERATOR);
|
|
|
|
}
|
|
|
|
}
|