rand 函式使用

2021-06-21 09:50:30 字數 637 閱讀 2272

一般情況下,我們在生成隨機數的時候,都會用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...