遇到隨機產生函數,之前不解,在此記錄下:
srand()函數是給rand()隨機數種子,在以下面的程序中以time來定種子。
其實srand()就是初始化rand()函數,以下是網上查找的資料對rand()初始化的理解
1.C的函數庫之所以沒有把使用系統時鐘初始化隨機種子這步重要的操作直接放進rand函數的實現中,我覺得至少有三個原因:
(1)可以高效產生連續的隨機數,不用每次都初始化;
(2)給程序員以更高的靈活性,因爲可能在要求較高的場合,應該使用更好的的數據做種子,而不是系統時鐘;
(3)對於只是想產生大量僞隨機數來盡興某種驗證或者統計,未必需要初始化,大不了程序每次運行都產生同樣的一系列隨機數而已——有些情況下,這是無所謂的。事實上有一個更重要的原因:作爲僞隨機序列產生器的rand()函數,必須具備的一個重要特性就是-》產生的序列必須是可重現的。