【发布时间】:2020-02-22 08:55:43
【问题描述】:
我不明白为什么它每次都输出相同的数字,即使它每次都应该输出不同的数字。 rand() % 10 + 1,应该随机输出 1 到 10 之间的数字,但我的代码每次只输出相同的 5 个数字。
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int v1;
for(v1=0; v1 < 10; v1++) {
v1 = rand() % 10 + 1;
cout << v1 << endl;
}
return 0;
}
【问题讨论】:
-
要让
rand()(一个糟糕的 PRNG)工作,你必须给它一个种子。 -
了解
rand()的工作原理(特别是用户代码未设置默认种子时的默认种子)。当您使用它时,请阅读有关现代 C++<random>库的信息,它在几乎所有可能的方式上都远优于rand()。也就是说,您使用v1作为both 你的循环控制和 你的“随机”值的持有者有什么特别的原因吗?你认为这会如何影响循环?? -
你需要播种,就像 Chipster 所说的那样。如果不播种,您将继续收到相同的数字。
-
也许我的链接很接近骗子。另外,也许有代表的人可以保护。还有一个选项是我们中的一个人写一个答案。
-
@Chipster 不要停在那里。我什至不确定真正的 problem 是什么(不是代码错误,而是这段代码试图解决的实际问题)。显然缺少一些播种,但是对于 rand-result 和 循环控制,是否可以重用
v1?问题描述表明要寻找 5 个数字,但在循环控制中绝对没有任何东西可以确保这一点。我真的很好奇这段代码真的应该做什么。
标签: c++