的相同顺序我有以下代码:使用boost ::随机并获得数
Class B {
void generator()
{
// creating random number generator
boost::mt19937 randgen(static_cast<unsigned int>(std::time(0)));
boost::normal_distribution<float> noise(0,1);
boost::variate_generator<boost::mt19937,
boost::normal_distribution<float> > nD(randgen, noise);
for (int i = 0; i < 100; i++)
{
value = nD();
// graph each value
}
}
};
Class A {
void someFunction()
{
for(int i = 1; i <=3; i++)
{
std::shared_ptr<B> b;
b.reset(new B());
b->generator();
}
}
};
我想在快速连续上面的代码中多次执行产生多个图形。我也回顾了this stackoverflow这个问题是类似的,但是警告说,当使用time(0)并且快速连续调用成员函数时,你仍然可能得到相同的数字序列。
我该如何解决这个问题?
编辑:我试图使B类randgen静态的,还试图使它在A类的全局变量,但每次3个图表仍然是相同的。我也尝试从GetSystemTime毫秒播种。我肯定错过了什么。
如果你有充分的理由使用mt19937而不是简单地使用rand(),那么也可能有一个很好的理由来获得体面的种子。有Web服务提供真正随机的数据,以及可以购买的硬件。您可以将它们用作种子(定期),并使用PRNG在重新种子之间节省时间/延迟。 http://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator – 2010-02-03 08:05:36
我一定会缺少一些东西 - 编辑问题来给出更大的图片。 – Seth 2010-02-04 00:08:15