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