跳转至

随机数

模版

均等分布

仅支持整数类型 int / long long / unsigned long long

和浮点数类型 double / long double

C++
template<class T>
struct Random {
    mt19937 mt;
    Random() : mt(chrono::steady_clock::now().time_since_epoch().count()) {}
    T operator()(const T& L, const T& R);
};
template<>
int Random<int>::operator()(const int &L, const int &R) {
    uniform_int_distribution<int> dist(L, R);
    return dist(mt);
}
template<>
long long Random<long long>::operator()(const long long &L, const long long &R) {
    uniform_int_distribution<long long> dist(L, R);
    return dist(mt);
}
template<>
unsigned long long Random<unsigned long long>::operator()(const unsigned long long &L, const unsigned long long &R) {
    uniform_int_distribution<unsigned long long> dist(L, R);
    return dist(mt);
}
template<>
double Random<double>::operator()(const double &L, const double &R) {
    uniform_real_distribution<double> dist(L, R);
    return dist(mt);
}
template<>
long double Random<long double>::operator()(const long double &L, const long double &R) {
    uniform_real_distribution<long double> dist(L, R);
    return dist(mt);
}
Random<int> rng;