C ++,二十个数字不是随机的?

时间:2010-01-29 02:22:55

标签: c++ random

为什么我的C ++编号不是随机的?

#include <iostream>
#include <cstdlib>
using namespace std;


int main()
{
    int randomNumber = rand() % 100;


    for (randomNumber = 0; randomNumber < 20; randomNumber++)
    {

        cout << randomNumber << endl;
    }
    return 0;
}

//Why are my 20 numbers not random?

5 个答案:

答案 0 :(得分:5)

您将randomNumber分配为随机值,然后在for循环中使用数字0到19覆盖它。在你的循环之前,你有一个随机数。

答案 1 :(得分:4)

每次需要随机数时,都需要调用rand()。正如你现在所拥有的那样,你生成一个随机数,然后将其递增并打印20次,这样你就可以获得20个连续数字。

尝试类似

的内容
srand(time(NULL)); // Seeding the random number generator

for(int i=0; i<20; ++i)
{
    cout << (rand() % 100) << endl;
}

随机数生成器的播种很重要,如果不是这样,每次运行程序时都会生成相同的数字。

答案 2 :(得分:4)

您需要正确播种随机数生成器,然后需要重复调​​用rand()以获取新的随机数。

例如:

srand(time(NULL));
for (int randomNumber = 0; randomNumber < 20; randomNumber++) 
{ 

    cout << (rand() % 100) << endl; 
} 

答案 3 :(得分:1)

你需要在srand()中使用time()函数作为种子,然后使用rand()。

srand(time(NULL));

顺便说一下,你没有打印rand()结果,请在srand调用之后使用它:

for (int i= 0; i < 20; i++)
{
    int randomNumber = rand() % 100;
    cout << randomNumber << endl;
}

答案 4 :(得分:0)

#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
    for (int i = 0; i < 20; i++)
    {
        int randomnumber = rand() % 100;
        cout << randomNumber << endl;
    }
    return 0;
}

P.S。我希望这是一个笑话:(