簡體   English   中英

封裝c ++隨機數生成器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM