rand 和 srand函数

来源:互联网 发布:java分布式如何开发 编辑:程序博客网 时间:2024/05/16 10:27

#include <ctime>

srand(time(0));


rand()函数产生的是“伪”随机数,它是由软件做成m序列发生器输出的。这个m序列发生器在初始状态不变的情况也,产生的“序列”是相同的——比如说在某一种状态(如0000...)下,它产生的序列是1 2 3 4 5 2 3 5 1 6......那么,下一次在0000...的初始状态下产生的序列还是1 2 3 4 5 2 3 5 1 6......但是,如果初始状态不同,则产生的序列就不同了。为了使我们得到的“伪”随机数更像“真”随机数,我们希望每次调用rand()函数前的初始状态是变化的。为此,C设计了一个srand()函数,它预置m序列发生器的初始状态,而且用一个随时可变的时间函数的返回值来调用srand(),这样它预置的初始状态就是随时间变化的,这样产生的m序列尽管仍然是“伪”的,但就有了以假乱真的效果。

//------------------

srand(time(0)) 就是给这个算法一个启动种子,也就是算法的随机种子数,有这个数以后才可以产生随机数,用1970.1.1至今的秒数,初始化随机数种子。Srand是种下随机种子数,你每回种下的种子不一样,用Rand得到的随机数就不一样。为了每回种下一个不一样的种子,所以就选用Time(0),Time(0)是得到当前时时间值(因为每时每刻时间是不一样的了)。

0 0
原创粉丝点击