c++中srand()的使用

use of srand() in c++

本文关键字:srand c++      更新时间:2023-10-16

我是c++的新手,所以这个疑问可能看起来很基本,但我不明白rand()和rand()之间的区别,以及srand()中的"seed"是什么意思?当我写srand(time(NULL))时,它是如何生成随机数的,time(NULL)在这里做什么?它是什么?提前感谢

随机数生成器需要一个数字(称为seed)来生成随机数。如果随机数生成器被赋予相同的种子,那么每次它都会生成相同的随机数序列。例如:-

如果你运行程序,它正在生成随机序列2,78,45,60。如果第二次运行该程序,您将再次得到相同的序列2,78,45,60。

srand函数用于更改随机数生成器的种子。通过设置srand(time(NULL)),您将随机数生成器的种子设置为当前时间。每次运行程序时都这样做,您将得到不同的随机序列:-

例如,对于第一次运行,如果您得到2,78,45,60。下一次您可能会得到5,3,6,80(取决于当前时间,因为自从上次运行以来时间发生了变化,seed已经发生了变化)

查看更多信息:-

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 ) )使您的程序生成一组值,这些值将依赖于当前时间,因此是不可复制的-每次重新启动程序时都会生成一组新的数字。