我是c ++的新手,所以这个疑问可能看起来很基本,但我没有得到rand()和srand()之间的区别,你在srand()中的"seed"是什么意思?当我写srand(time(NULL))时,它如何生成随机数,time(NULL)在这里做什么?还有,这是什么?提前致谢
deo*_*ngh 13
随机数生成器需要一个数字(称为种子)来生成随机数.如果随机数生成器被赋予相同的种子,则每次它将生成相同的随机数序列.例如 :-
如果你运行该程序,它正在生成随机序列2,78,45,60.如果第二次运行程序,您将再次获得相同的序列2,78,45,60.
srand函数用于更改随机数生成器的种子.通过设置srand(time(NULL)),您将随机数生成器的种子设置为当前时间.每次运行程序时都会这样做得到不同的随机序列: -
例如,对于第一次运行,如果你得到2,78,45,60.下次你可能得到5,3,6,80(取决于当前时间,因为种子自上次运行以来的时间已经改变)
欲了解更多信息,请参阅: -
http://www.cplusplus.com/reference/clibrary/cstdlib/rand/
http://www.cplusplus.com/reference/clibrary/cstdlib/srand/
http://www.cplusplus.com/reference/clibrary/ctime/time/
rand()不产生随机数 - 它使用一些非常简单的公式来计算下一个"随机值",基于其存储的内部状态,每次生成随机值时都会改变.srand()设置内部状态.
通过这种方式,您可以获得可重现的数字集 - 您srand()可以使用给定值调用,rand()然后生成一组值.当您下次启动程序并srand()使用完全相同的值调用时,rand()将生成完全相同的值集.这对于模拟很有用.
调用srand( time( NULL ) )使程序生成一组取决于当前时间的值,因此无法再生成 - 每次重新启动程序时,都会生成一组新的数字.