一般情況下,我們在生成隨機數的時候,都會用srand來獲取種子,再使用rand()函式生成隨機數。
#include
#include
void main()
}結果確並不是跟設想的一樣產生隨機數:
[root@localhost test]# ./a.out
i = 0, r = 6
i = 1, r = 6
i = 2, r = 6
i = 3, r = 6
i = 4, r = 6
i = 5, r = 6
i = 6, r = 6
i = 7, r = 6
i = 8, r = 6
i = 9, r = 6
原因:srand()函式是初始化隨機數產生器,它產生隨機數種子,說白了就是初始化隨機數。
srand((unsigned)time(0));取的是系統時間,也就是距離1970.1.1午夜有多少秒。
而for迴圈每迴圈一次時間遠遠小於1秒,這就導致了srand((unsigned)time(0))產生的種子並沒有改變。
因此,相同的隨機數種子所產生的隨機數肯定是一樣的了。
修改方法:
將srand(time(null));挪到迴圈外邊
rand 函式的使用
使用 執行結果說明隨機函式的使用 隨機數生成的原理 計算機產生的隨機數一般都只是乙個週期很長的數列,不是真的隨機數。也就是說,隨機數一般是偽隨機數,每個隨機數都是由隨機種子開始的乙個已定的數列 週期很長 一般地,為了隨機數更真一點,隨機種子在系統中通常是參照系統時鐘生成的。以上引用了別人的話。有幾個...
RAND MAX的使用及rand()函式使用
rand 不需要引數,它會返回乙個從0到最大隨機數的任意整數,最大隨機數的大小通常是固定的乙個大整數,一般為0x7fff rand 範圍是 0,rand max 如果說是 10rand 則對應的範圍應該為 0.0,10rand max 一般來說,rand b a 1 a 就表示 a b 之間的乙個隨...
Matlab之rand函式的使用
rand函式的意義 rand是0 1的均勻分布,randn是均值為0方差為1的正態分佈 用法自己help rand或者help randn一下就知道了 rand n 或randn n 生成n n的隨機數矩陣 rand n,m 或randn m,n 生成m n的隨機數矩陣。y rand n y ran...