在 《浮点数生成器》 一文中我们分享了如何生成随机浮点数的方法。本文提供一个模板类,用于生成各种随机数类型。
#include <iostream>
#include <random>
#include <type_traits>template<typename T>
class DataGenerator {
public:DataGenerator(T min, T max) : dist(min, max) {}T generate() {return dist(rng);}private:std::random_device rd;std::mt19937 rng{rd()};typename std::conditional<std::is_integral<T>::value,std::uniform_int_distribution<T>,std::uniform_real_distribution<T>>::type dist;};class RandomDoubleGenerator : public DataGenerator<double>
{
public:RandomDoubleGenerator(double min, double max) : DataGenerator(min, max) {}
};class RandomIntGenerator : public DataGenerator<int>
{
public:RandomIntGenerator(int min, int max) : DataGenerator(min, max) {}
};