srand()((unsigned int)time(0));
srand()的形参是unsigned int类型的;
这句话只要写一次,一般情况下只能写一次;
随机数是随机的数,但计算机不可能产生随机数,计算机根据你的输入,再跟一个算法就产生一个特定的序列.只要
你给计算机一个相同的数,计算机返回的就是一个特定的数,所以这样的数叫做伪随机数.
而srand()(unsigned int par);这就是原型,这就是你给计算机的数.计算机通过rand()返回一个序列,
假设是{2,6,8,51....},只要给相同的参数, 这个序列是特定的.int a=rand();这时候a=2;所以可以得出只要每次给计
算机不同的数也就是srand(unsigned int pra)也就是给pra是不同的值,我们就可以认为这个序列是随机的.要想给不
同的值,
最简单的方法是把系统时间转化成unsigned给计算机就可以了,因为每时每刻时间都是不同的.这里要注意,时间是秒为
单位,也就是说你如果srand((unsigned)time(NULL));
只是在每一秒内取随rand()的话,因为时间还没来得及变,它还不是完全随机的,在下一秒就会换取另一条序列,可以
说是相对的随机。这牵扯掉内部的东西,只要知道层面上的东西就够了。现在我来告诉你为什么你得到了2组一样的结
果,因为计算机运算的速度是相当快的,你的2次srand()取值操作肯定是在一秒内之间发生的,第一次产生随机数
后,你又写了一遍srand((unsigned)time(NULL)); 相当于根据时间又埋下了种子,而这次埋下的种子和上一次的种子
是完全相同的,所以产生的序列也相同,于是计算机又按顺序从头开始把这条序列中的值取出来,产生了上述结果;
总结,在程序中只要写一次srand((unsigned)time(NULL)); 这个很重要,重复调用 会出现随机出来的点数容易相同