C rand 和srand 的原理

2021-10-19 12:02:42 字數 868 閱讀 2141

c++ rand()和srand()的原理;

rand()

rand()不需要任何引數,但是他會直接返回乙個從0->最大隨機數

的任意乙個整數.

但是rand()只會產生一次,即便再次編譯,結果仍舊不便;

那麼就用到了srand();

srand()

void srand(unsigned seed)//此處型別是unsigned

引數seed是rand()的種子,用來初始化rand()的起始值。

可以認為rand()在每次被呼叫的時候,它會檢視:

1) 如果使用者在此之前呼叫過srand(seed),給seed指定了乙個值,那麼它會自動呼叫srand(seed)一次來初始化它的起始值。

2) 如果使用者在此之前沒有呼叫過srand(seed),它會自動呼叫srand(1)一次。

rand函式在產生隨機數前,需要系統提供的生成偽隨機數序列的種子,rand根據這個種子的值產生一系列隨機數。如果系統提供的種子沒有變化,每次呼叫rand函式生成的偽隨機數序列都是一樣的。srand(unsigned seed)通過引數seed改變系統提供的種子值,從而可以使得每次呼叫rand函式生成的偽隨機數序列不同,從而實現真正意義上的「隨機」。通常可以利用系統時間來改變系統的種子值,即srand(time(null)),可以為rand函式提供不同的種子值,進而產生不同的隨機數序列。

#include//標頭檔案包含rand和srand函式

#include#includevoid main()

}

C rand 函式和srand 函式解讀

1 srand unsigned int t 這個是設定種子。因為電腦取隨機數是偽隨機,只要種子一樣,則取出來的數一定一樣。這裡用time 0 這個內函式,copy則是返回了當前的時間值。這個值是按照時間而變化的,所以,srand unsigned time null 這個函式的作用,就是乙個簡單的...

rand 和srand 函式的用法

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

rand 和srand 函式的用法

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