有时我们使用for循环去产生随机数组时,发现其生成的随机数都一样,这和我们想要的不一样。通过查阅相关资料后发现,是因为当计算机的性能较快时,for循环运行时间非常短,srand(time(NULL))每次都返回相同的值。
原因:用系统时间做随机种子并不保险,如果应用程序在一个较快的计算机上运行,则该计算机的系统时钟可能没有时间在此构造函数的调用之间进行更改,Random 的不同实例的种子值。
解决方法一:使用Random ra=new Random();
解决方法二:使用Sleep()函数。
Sleep函数
功能: 执行挂起一段时间,也就是等待一段时间在继续执行
用法: Sleep(时间)
头文件: Windows下为--> windows.h
Linux 下为 --> unistd.h
注意: (1)Sleep是区分大小写的,有的编译器是大写,有的是小写。
(2)Sleep括号里的时间,在windows下是已毫秒为单位,而Linux是以秒为单位
代码实例