rand 和srand 函式的用法

2021-08-28 16:01:21 字數 955 閱讀 5227

一、rand()

rand()函式用來產生隨機數,但是,rand()的內部實現是用線性同餘法實現的,是偽隨機數,由於週期較長,因此在一定範圍內可以看成是隨機的。

rand()會返回乙個範圍在0到rand_max(32767)之間的偽隨機數(整數)。

在呼叫rand()函式之前,可以使用srand()函式設定隨機數種子,如果沒有設定隨機數種子,rand()函式在呼叫時,自動設計隨機數種子為1。隨機種子相同,每次產生的隨機數也會相同。

rand()函式需要的標頭檔案是:

rand()函式原型:int rand(void);

使用rand()函式產生1-100以內的隨機整數:int number1 = rand() % 100;

二、srand()

srand()函式需要的標頭檔案仍然是:

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

srand()用來設定rand()產生隨機數時的隨機數種子。引數seed是整數,通常可以利用time(0)或geypid(0)的返回值作為seed。

使用rand()和srand()產生1-100以內的隨機整數:srand(time(0));

int number1 = rand() % 100;

三、使用rand()和srand()產生指定範圍內的隨機整數的方法

「模除+加法」的方法

因為,對於任意數,0<=rand()%(n-m+1)<=n-m

因此,0+m<=rand()%(n-m+1)+m<=n-m+m

因此,如要產生[m,n]範圍內的隨機數num,可用:

int num=rand()%(n-m+1)+m;

其中的rand()%(n-m+1)+m算是乙個公式,記錄一下方便以後查閱。

比如產生10~30的隨機整數:

srand(time(0));

int a = rand() % (21)+10

rand 和srand 函式的用法

一 rand rand 函式用來產生隨機數,但是,rand 的內部實現是用線性同餘法實現的,是偽隨機數,由於週期較長,因此在一定範圍內可以看成是隨機的。rand 會返回乙個範圍在0到rand max 32767 之間的偽隨機數 整數 在呼叫rand 函式之前,可以使用srand 函式設定隨機數種子,...

srand 以及rand 函式用法

srand 就是給rand 提供種子seed 如果srand每次輸入的數值是一樣的,那麼每次執行產生的隨機數也是一樣的,srand n for 10 rand 也就是說,以乙個固定的數值作為種子是乙個缺點。通常的做法是 以這樣一句 srand unsigned time null 來取代,這樣將使得...

srand 以及rand 函式用法

srand 就是給rand 提供種子seed 如果srand每次輸入的數值是一樣的,那麼每次執行產生的隨機數也是一樣的,srand n for 10 rand 也就是說,以乙個固定的數值作為種子是乙個缺點。通常的做法是 以這樣一句 srand unsigned time null srand uns...