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