[英]Encapsulate c++ Random Number Generator
我正在建立一些需要我做的事情
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 ++中的隨機數生成器是否具有通用基類型
不清楚您要問的是什么,但這是一個相當容易使用的函數,用於返回特定范圍內的均勻分布的隨機整數。
#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});
}
該標准的第26.5.1.3節描述了對隨機數發生器的要求。
特別是,生成器必須支持函數調用運算符:
g()T返回閉區間[G :: min(),G :: max()]中的值。 攤銷常數
因此,盡管每個生成器都沒有共享基類,但是該標准保證在每個生成器中都存在operator()
:您可以在函數中調用rng()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.