c/c++中產生隨機數使用rand()函數,但是這樣每次啟動程序時產生的隨機數序列都是相同的,所以,這樣產生的并不是真正的隨機數列。
這里我們可以使用srand函數對隨機數產生器進行初始化,而使用srand初始化的時候,需要給其提供一個種子,不同的種子就可以對應不同的隨機數序列,但是如果種子相同,rand()產生的隨機數序列還是相同的,所以,srand(1)進行初始化,顯然不符合我們產生隨機數的要求,通常的做法就是利用time函數來獲得當前系統時間距離00:00:00GMT,January,1,1970這個時刻的秒數。然后強轉成unsigned類型來作為種子,這樣,能保證每次的種子都不相同。所以,產生隨機數的函數如下:
~~~
srand((unsigned)time(NULL));
int a = rand();
~~~
這樣就能夠產生符合我們需要的隨機數序列了。
ps:rand函數在stdlib包中;time函數在time包中;srand函數也在stdlib包中;莫忘導入包。