我正在构建一些需要我
的东西template<D>
class DistributionAdapter {
public:
/**
* @return number generated by the distribution function.
*/
virtual D operator()(RANDOM_NUMBER_GENERATOR& rng) = 0;
};
RANDOM_NUMBER_GENERATOR应该表示c ++中的随机数生成器类,std :: random_device或伪随机数生成器。有人能告诉我该如何处理这个问题,我不知道c ++中的随机数生成器是否有一个共同的基类型
答案 0 :(得分:0)
你所要求的并不完全清楚,但这是一个相当容易使用的函数,在特定范围内返回均匀分布的随机整数。
#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});
}
答案 1 :(得分:0)
标准的第26.5.1.3节描述了随机数发电机的要求。
特别是,生成器必须支持函数调用操作符:
g()T返回闭区间[G :: min(),G :: max()]中的值。 摊销常数
因此,尽管每个生成器都没有共享基类,但标准保证每个生成器中都存在operator()
:您可以在函数中调用rng()
。