均等分布
仅支持整数类型 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;
|