2013-02-15 35 views
-5

我试图在范围得到的随机数从0到3。使用这样的代码:C++的随机函数返回相同的数字

#include <cstdlib> 
int index = rand() % 3; 

但总是得到相同的结果:1 1 0 1

我在做什么错了?总是相同的数字。结果应该在每次编译之后或运行时更改它们的值?

回答

6

你在你的程序的开始忘了广告

#include <ctime> 
srand(time(NULL)) 

这将在您每次运行基于当前时间的程序时生成一个新种子。

+0

http://www.kodyaz.com/images/pics/random-number-generator-dilbert-comic.jpg – user1511417 2013-02-16 15:41:35

2

结果应该在每次编译后或运行时更改它们的值?

其实没有,结果都应该是一个给定的种子一样,如果你不srand()设置种子明确的,那么结果将是每次运行一样。为了每次都得到不同的结果,你应该使用某些不完全确定性的东西来设置种子,比如时间(不是确定性的,因为你不知道准备好种子的确切时间) 。