//Generate Food Personality
for(i=0; i<food.size(); i++)
{
srand(time(0));
int randomFood = rand() % 6;
if(randomFood == 1 || randomFood == 3 || randomFood == 5)
{
badFood.push_back(food[randomFood]);
}
else if(randomFood == 0 || randomFood == 2 || randomFood == 4)
{
goodFood.push_back(food[randomFood]);
}
}
cout << "Size of Food Vector: " << food.size() << endl;
cout << "Size of Bad Food: " << badFood.size() << endl;
cout << "Size of Good Food " << goodFood.size() << endl;
randomFood是通过6的随机数,它取决于该随机数如何证明发生在食品[]中的随机数,并把它添加到 的载体。随机数总是产生1数个
我的问题是,它似乎总是产生一个奇数或偶数。 bad和good.size()总是以6或0打印出来,而不是其他任何东西。
不要在随机数发生器中使用模运算符;它使用最低有效位(几乎是确定性的)而不是前导位(更接近于伪随机)。将其除以6并截断为整数。 – 2010-10-05 18:36:57
我无法抗拒:http://xkcd.com/221/ – 2010-10-05 18:39:27
哦,天哪。我笑了。 – 2010-10-05 18:40:16