我目前正試圖實現一個使用驗收拒絕方法的隨機數發生器(類)。因此我需要不同的C++ 11隨機數分佈(在我的情況下是正態分佈和均勻分佈)。我想盡可能使隨機數字,因此想要使用以下來建立功能:初始化列表中的種子序列初始化
[...]
#include <random>
#include <vector>
[...]
std::vector<int> seeds(16);
std::mt19937 mt;
std::minstd_rand seed_rng(101); // random seed
for(size_t i=0;i<16;++i) seeds[i]=seed_rng();
std::seed_seq seq(seeds.begin(), seeds.end());
mt.seed(seq);
rng_normal = std::bind(ndist, std::ref(mt));
[...]
這很好地工作。但是,當我嘗試將所有這些現在放在構造函數中時,我無法再使用種子序列的初始化。我檢查了C++引用,但只是遇到了std :: seed_seq :: generate,這不是正確的解決方案。
有沒有辦法在填充矢量後在我的init列表中構造seed_seq? 有關seed_seq的參考,請參閱此處:
http://en.cppreference.com/w/cpp/numeric/random/seed_seq
謝謝您,提供任何建議!
把這段代碼放在構造函數中有什麼問題?還是你問你可以在初始化列表中完成所有工作? – Praetorian 2015-01-20 18:42:55
@Praetorian是的,對不起。我想在初始化列表中完成一切。 – 2015-01-20 18:50:00