for(int j=0;j<2;j++)
{
for(int i=0;i<3276800;i++)
{
cout<<(rand()%2)<<'\n';
}
cout<<endl;
}
第一个 3276800 和第二个 3276800 是一样的。rand()的个数不一样,但是odevity是一样的;为什么?
大多数实现使用的 RNGrand
是一个线性同余生成器。这些往往在低位有很差的周期;非常幼稚的实现可能在低位只有 2 个周期(即交替 0 和 1)。
更好的实现只返回随机值的高 16 位,丢弃质量差的低位。在这样的实现中,低位的周期最多为 2^16 = 65536。由于 65536 均分 3276800,因此您将看到周期模式。