似乎有一些关于使用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.
....
我的问题是:
这是神话还是有一些真相?
如果它是可行的,应该忽略多少位?因为我看到的数字似乎是随意的。