for循环中的if语句(随机数生成器)

时间:2018-07-27 16:02:00

标签: random numbers generator

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

int main()
{
unsigned seed;
cout << "Input a whole number between 0 and 65535 to\n initialize the random number generator: ";
cin >> seed;
srand(seed);

int number;
number = rand();

int count;
for (count = 1; count <= 20; count++)
{

    if (number >= 1 && number <= 100)
    {
        cout << number << endl;
        number = rand();
    }
    else
    {
        number = rand();
        --count;
    }

}
return 0;
}

我正在尝试编码一个随机数生成器,该生成器会打印出1到100之间(包括1到100)的20个随机数。现在,在我将else语句(--count)中的“ count”减一之后,一切工作正常。如果没有该“ --count”,程序将只输出一个或根本不输出任何数字。如果if语句初始化rand()函数在每个循环后生成一个新数字,为什么它只输出一个数字?谁能向我解释为什么我必须在其他语句中加上--count?减少“计数”更多的是猜测,而不是知道为什么。即使生成的数字超过100,也必须一次又一次地生成它,直到适合大小写为止。

1 个答案:

答案 0 :(得分:0)

在您的初始代码中,如果该值超出了您想要的范围(1-100),它仍将在for循环中递增计数,但由于数字超出范围,因此不会打印任何内容。您需要--count;为了从根本上告诉您的for循环“该数字超出了范围,因此请勿计算该迭代次数,然后重试。”