//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;
Run Code Online (Sandbox Code Playgroud)
randomFood是一个随机数到6,它取食物[]中的随机数,并根据随机数的结果将其加到矢量中.
我的问题似乎是它总是产生奇数或偶数.而bad和good.size()总是打印为6或0,绝不是其他任何东西.
fbr*_*eto 10
srand(time(0));
在循环开始时调用每次循环都会重置随机数生成器.因此,您每次都会获得相同的初始随机数.
(从技术上讲,可以time(0)
在for循环的迭代之间返回一个不同的值,但考虑到当今处理器的速度,当你提供的代码发生这种情况时,这将是一种非常罕见的情况.)
在任何情况下,你应该叫srand
权之前的for
(在你的程序的开头或更好,但只是一次循环main
程序.)