RAND MAX的使用及rand()函式使用

2021-10-03 10:03:46 字數 950 閱讀 4408

rand()不需要引數,它會返回乙個從0到最大隨機數的任意整數,最大隨機數的大小通常是固定的乙個大整數,一般為0x7fff;

rand()範圍是[0,rand_max]

如果說是 10rand(),則對應的範圍應該為[0.0,10rand_max]

一般來說,rand() % (b-a+1)+ a ; 就表示 a~b 之間的乙個隨機整數。

即:要取得[a,b)的隨機整數,使用(rand() % (b-a))+ a (結果值含a不含b)。

要取得[a,b]的隨機整數,使用(rand() % (b-a+1))+ a (結果值含a和b)。

要取得(a,b]的隨機整數,使用(rand() % (b-a))+ a + 1 (結果值不含a含b)。

例如對5取餘求模,結果都是小於5的,但是如果對6取餘求模,結果是小於等於5

在程式設計序時,單純的使用rand是無法產生真正的隨機數的,如果想每次執行程式時產生的隨機數都不一樣,可以使用srand來初始化種子

當計算機正常開機後,這個種子的值是定了的。 為得到不同的隨機數序列,則需改變這個種子的值。方法:在開始產生隨機數前,呼叫一次srand(time(null))。

srand()一定要放在迴圈外面或者是迴圈呼叫的外面,否則的話得到的是相同的隨機數。

-----補充------

生成浮點數隨機數,a b為整數或浮點數

[0,1]—rand()*1.0/rand_max

[a,b]—rand()1.0/rand_max(b-a)+a

[a,b)—rand()1.0/(rand_max+1)(b-a)+a

(a,b]—(rand()+1)1.0/(rand_max+1)(b-a)+a

(a,b)—(rand()+1)1.0/(rand_max+2)(b-a)+a

rand 函式的使用

使用 執行結果說明隨機函式的使用 隨機數生成的原理 計算機產生的隨機數一般都只是乙個週期很長的數列,不是真的隨機數。也就是說,隨機數一般是偽隨機數,每個隨機數都是由隨機種子開始的乙個已定的數列 週期很長 一般地,為了隨機數更真一點,隨機種子在系統中通常是參照系統時鐘生成的。以上引用了別人的話。有幾個...

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

srand函式與rand函式的使用方法及區別

rand函式 函式標頭檔案 stdlib.h 函式定義 int rand void 函式功能 產生乙個隨機數 函式說明 rand函式產生的隨機數嚴格意義講不是真正的隨機數,它裡面採用了線性同餘法計算出隨機數,所謂的線性同語法簡單來說就是使用了乙個公式,該方法有個最大週期m,也就是說該方法實在一定的範...