C++ 封装c++;随机数发生器

C++ 封装c++;随机数发生器,c++,random,encapsulation,C++,Random,Encapsulation,我正在建造一些需要我去做的东西 template<D> class DistributionAdapter { public: /** * @return number generated by the distribution function. */ virtual D operator()(RANDOM_NUMBER_GENERATOR& rng) = 0; }; 模板 类分布适配器{ 公众: /** *@分配函数生成的返回编号。

我正在建造一些需要我去做的东西

template<D>
class DistributionAdapter {
public:
    /**
     * @return number generated by the distribution function.
     */
    virtual D operator()(RANDOM_NUMBER_GENERATOR& rng) = 0;
};
模板
类分布适配器{
公众:
/**
*@分配函数生成的返回编号。
*/
虚拟D运算符()(随机数生成器&rng)=0;
};

随机数发生器是表示C++中随机数生成器的一种,即STD::随机设备或伪随机数发生器。有人能告诉我该如何处理这个问题,我不知道C++中的随机数生成器是否有一个共同的基类型

< p>,你不太清楚你所要问的是什么,但是这里是一个相当简单的函数,它能在特定范围内返回均匀分布的随机整数。
#include <random>

// random number generator from Stroustrup: 
// http://www.stroustrup.com/C++11FAQ.html#std-random
int rand_int(int low, int high)
{
    static std::default_random_engine re {};
    using Dist = std::uniform_int_distribution<int>;
    static Dist uid {};
    return uid(re, Dist::param_type{low,high});
}
#包括
//Stroustrup中的随机数生成器:
// http://www.stroustrup.com/C++11FAQ.html#std random
整数和整数(整数低,整数高)
{
静态std::默认的随机引擎re{};
使用Dist=std::均匀分布;
静态区uid{};
返回uid(re,Dist::param_type{low,high});
}

本标准§26.5.1.3节描述了随机数发生器的要求

特别是,生成器必须支持函数调用运算符:

g()T返回闭合区间[g::min(),g::max()]中的值。 摊销常数


因此,虽然没有每个生成器共享的基类,但标准保证
操作符()
将出现在每个生成器中:您可以在函数中调用
rng()

那么我们在参数中强制使用哪种类型?这个解决方案不能回答这个问题。