1. 程式人生 > >rand 和 srand函式

rand 和 srand函式

#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)是得到當前時時間值(因為每時每刻時間是不一樣的了)。