我正在尝试获取 0 到 3 范围内的随机数。使用这样的代码:
#include <cstdlib>
int index = rand() % 3;
但总是得到相同的结果:1 1 0 1
.
我做错了什么?总是相同的数字。结果应该在每次编译后或运行时更改其值?
你忘了做广告
#include <ctime>
srand(time(NULL))
在您的程序开始时。
这将在您每次根据当前时间运行程序时生成一个新种子。
结果应该在每次编译后或运行时更改其值?
实际上,不,对于给定的种子,结果应该是相同的,如果你没有用 明确设置种子srand()
,那么每次运行的结果都是一样的。要每次获得不同的结果,您应该使用从不完全确定的事物(例如时间)派生的东西来设置种子(在您不知道用于设置种子的那一刻的确切时间的意义上,不是确定性的) .