我试图在范围得到的随机数从0到3。使用这样的代码:C++的随机函数返回相同的数字
#include <cstdlib>
int index = rand() % 3;
但总是得到相同的结果:1 1 0 1
。
我在做什么错了?总是相同的数字。结果应该在每次编译之后或运行时更改它们的值?
我试图在范围得到的随机数从0到3。使用这样的代码:C++的随机函数返回相同的数字
#include <cstdlib>
int index = rand() % 3;
但总是得到相同的结果:1 1 0 1
。
我在做什么错了?总是相同的数字。结果应该在每次编译之后或运行时更改它们的值?
你在你的程序的开始忘了广告
#include <ctime>
srand(time(NULL))
。
这将在您每次运行基于当前时间的程序时生成一个新种子。
结果应该在每次编译后或运行时更改它们的值?
其实没有,结果都应该是一个给定的种子一样,如果你不srand()
设置种子明确的,那么结果将是每次运行一样。为了每次都得到不同的结果,你应该使用某些不完全确定性的东西来设置种子,比如时间(不是确定性的,因为你不知道准备好种子的确切时间) 。
http://www.kodyaz.com/images/pics/random-number-generator-dilbert-comic.jpg – user1511417 2013-02-16 15:41:35