我目前正试图实现一个使用验收拒绝方法的随机数发生器(类)。因此我需要不同的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