#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,也必须一次又一次地生成它,直到适合大小写为止。
答案 0 :(得分:0)
在您的初始代码中,如果该值超出了您想要的范围(1-100),它仍将在for循环中递增计数,但由于数字超出范围,因此不会打印任何内容。您需要--count;为了从根本上告诉您的for循环“该数字超出了范围,因此请勿计算该迭代次数,然后重试。”