围绕mt19937的使用似乎有一些神话,特别是一旦播种生成器产生的“一些”比特数应该被忽略,以便尽可能接近伪随机性。
我见过的代码示例如下:
boost::mt19937::result_type seed = 1234567; //taken from some entropy pool etc
boost::mt19937 prng(seed);
boost::uniform_int<unsigned int> dist(0,1000);
boost::variate_generator<boost::mt19937&,boost::uniform_int<unsigned int> > generator(prng,dist);
unsigned int skip = 10000;
while (skip--)
{
generator();
}
//now begin using for real.
....
我的问题是:
这是神话还是这一切都有真相?
如果它是可行的,应该忽略多少位?因为我看到的数字
似乎是任意的