rand 函式的使用

2021-09-30 07:59:14 字數 2403 閱讀 3961

使用**執行結果說明隨機函式的使用

隨機數生成的原理

「計算機產生的隨機數一般都只是乙個週期很長的數列,不是真的隨機數。也就是說,隨機數一般是偽隨機數,每個隨機數都是由隨機種子開始的乙個已定的數列(週期很長)。一般地,為了隨機數更真一點,隨機種子在系統中通常是參照系統時鐘生成的。」

以上引用了別人的話。有幾個關鍵點:一是所謂的隨機數是偽隨機數,二『偽隨機數生成器返回的每乙個值完全由它返回的前乙個值所決定數(最終,該種子決定了一切)』。所以產生隨機數,首先要解決隨機數種子的問題。

若產生的隨機數不需要設定範圍的話,用rand()就可以:rand()會返回一隨機數值, 範圍在0至rand_max 間。rand_max其值為2147483647。

連續執行兩次下面的**

示例一:兩次執行產生的隨機數列相同

#include

#include

int main()

}student@student-desktop:~/c$ gcc 1.c

student@student-desktop:~/c$ ./a.out

1804289383

846930886

1681692777

1714636915

1957747793

student@student-desktop:~/c$ gcc 1.c

student@student-desktop:~/c$ ./a.out

1804289383

846930886

1681692777

1714636915

1957747793

如果未設隨機數種子, rand()在呼叫時會自動設隨機數種子為1。上面的例子就是因為沒有設定隨機數種子,每次隨機數種子都自動設成相同值1 ,進而導致rand()所產生的隨機數值都一樣。

srand()用來設定rand()產生隨機數時的隨機數種子。在呼叫rand()函式產生隨機數前,必須先利用srand()設好隨機數種子(seed)。

srand()函式定義 : void srand (unsigned int seed);

通常可以利用time(0)的返回值來當做seed

如果用time(0)的話,要加入標頭檔案#include

示例二:

連續執行三次下面的**

#include

#include

int main()

}student@student-desktop:~/c$ gcc 1.c

student@student-desktop:~/c$ ./a.out

1924094034

1785506308

1524704222

1354507979

344402972

student@student-desktop:~/c$ ./a.out

404710938

1928005067

1553276364

1571725223

1786119107

student@student-desktop:~/c$ ./a.out

732550552

812691376

90442638

1407542519

941658889

示例三:如果兩次執行時間間隔大於一秒,那麼種子就會不同。

連續執行三次下面的**

#include

#include

int main()

}student@student-desktop:~/c$ gcc 1.c

student@student-desktop:~/c$ ./a.out

1179588171

1179588171

1179588171

1179588171

1179588171

student@student-desktop:~/c$ ./a.out

1355266778

1355266778

1355266778

1355266778

1355266778

student@student-desktop:~/c$ ./a.out

437518563

437518563

437518563

437518563

437518563

#include

#include

int main()

}student@student-desktop:~/c$ gcc 1.c

student@student-desktop:~/c$ ./a.out

814189286

497536887

200370014

2046930661

679349646

rand 函式使用

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

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...