生成隨機數函式解析

2021-09-25 18:38:56 字數 1507 閱讀 6597

c++ 隨機函式生成。

有時候,我們需要隨機產生乙個在某範圍的隨機數,c++中rand()函式可以用來產生隨機數,但是是屬於偽隨機數。

函式原型:int rand(void);

標頭檔案: #include

返回值:返回乙個[0,rand_max]間的隨機整數。其中rand_max是定義在stdlib.h標頭檔案中的乙個常量32767。

rand()函式不接受引數,預設以1為種子(即起始值)。 隨機數生成器總是以相同的種子開始,所以形成的偽隨機數列也相同,失去了隨機意義。若要不同,此時需要使用函式srand()進行初始化。

函式原型:void srand(unsigned int seed);

srand()函式用來初始化隨機數發生器,引數seed必須是個整數,如果每次seed都設相同值,rand()所產生的隨機數值每次就會一樣。

可以利用srand((unsigned int)(time(null))的方法,產生不同的隨機數種子,因為每一次執行程式的時間是不同的。

給srand()提供乙個種子,它是乙個unsigned int型別;

呼叫rand(),它會根據提供給srand()的種子值返回乙個隨機數(在0到rand_max之間);

根據需要多次呼叫rand(),從而不間斷地得到新的隨機數;

無論什麼時候,都可以給srand()提供乙個新的種子,從而進一步「隨機化」rand()的輸出結果。

0~rand_max之間的隨機數程式:

srand((unsigned)time(null)); 

for(int i = 0; i < 10;i++ )

cout << rand() << endl;

cout << endl;

產生一定範圍隨機數的通用表示公式:要取得[a,b)的隨機整數,使用(rand() % (b-a))+ a;

要取得[a,b]的隨機整數,使用(rand() % (b-a+1))+ a;

要取得(a,b]的隨機整數,使用(rand() % (b-a))+ a + 1;

通用公式:a + rand() % n;其中的a是起始值,n是整數的範圍。

要取得a到b之間的隨機整數,另一種表示:a + (int)b * rand() / (rand_max + 1)。

要取得0~1之間的浮點數,可以使用rand() / double(rand_max)。

c++新標準,有乙個叫隨機數引擎的東西。

#include < random > //標頭檔案

利用隨機函式生成隨機數

給定乙個rand 可以產生從0到rand max的隨機數,其中 rand max 很大 常見值 16位int能表示的最大整數32767 寫出利用rand 生成 a,b 中任意整數的函式,其中a 0,b rand max,且b a 分析 這是在程式設計工作最常見的隨機函式的應用,在這裡做乙個起點再合適...

matlab生成隨機數函式

1.matlab 函式rand 產生在區間 0,1 的均勻隨機數,它是平均分布在 0,1 之間。乙個稱為 seed 的值則是用來控制產生隨機數的次數。均勻隨機數函式的語法為 rand n rand m,n 其結果分別產生一矩陣含n n個隨機數和一矩陣含m n的隨機數。注意每次產生隨機數的值都不會一樣...

PHP函式生成隨機數

通常情況下,當我們要生成乙個隨機字串時,總是先建立乙個字元池,然後用乙個迴圈和mt rand 或rand 生成php隨機數,從字元池中隨機選取字元,最後拼湊出需要的長度,如下 function randomkeys length fckpd 0pound 字元池 key for i 0 i leng...