随机数始终生成1个数字

Nic*_*son 1 c++ random

//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程序.)