隨機函式rand 和隨機數種子的作用

2021-07-26 17:47:30 字數 1056 閱讀 9707

c/c++怎樣產生隨機數:這裡要用到的是rand()函式, srand()函式,c語言/c++裡沒有自帶的random(int number)函式。

(1)  如果你只要產生隨機數而不需要設定範圍的話,你只要用rand()就可以了:rand()會返回一隨機數值, 範圍在0至rand_max 間。rand_max定義在stdlib.h, 其值為2147483647。

例如:

#include

#include

void main()

(2)  如果你要隨機生成乙個在一定範圍的數,你可以在巨集定義中定義乙個random(int number)函式,然後在main()裡面直接呼叫random()函式:

例如:隨機生成10個0~100的數:

#include

#include

#define random(x) (rand()%x)

void main()

(3)但是上面兩個例子所生成的隨機數都只能是一次性的,如果你第二次執行的時候輸出結果仍和第一次一樣。這與srand()函式有關。srand()用來設定rand()產生隨機數時的隨機數種子。在呼叫rand()函式產生隨機數前,必須先利用srand()設好隨機數種子(seed), 如果未設隨機數種子, rand()在呼叫時會自動設隨機數種子為1。上面的兩個例子就是因為沒有設定隨機數種子,每次隨機數種子都自動設成相同值1 ,進而導致rand()所產生的隨機數值都一樣。

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

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

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

例如:

#include

#include

#include

#define random(x) (rand()%x)

void main()

這樣兩次執行的結果就會不一樣了!!

隨機數和隨機數種子 rand 和srand

在計算機中並沒有乙個真正的隨機數發生器,但是可以做到使產生的數字重複率很低,這樣看起來好象是真正的隨機數,實現這一功能的程式叫偽隨機數發生器。有關如何產生隨機數的理論有許多,如果要詳細地討論,需要厚厚的一本書的篇幅。不管用什麼方法實現隨機數發生器,都必須給它提供乙個名為 種子 的初始值。而且這個值最...

隨機數種子

隨機數 int main 函式rand 是真正的隨機數生成器,而srand 會設定供rand 使用的隨機數種子。如果你在第一次呼叫rand 之前沒有呼叫srand 那麼系統會為你自動呼叫srand 而使用同種子相同的數呼叫 srand 會導致相同的隨機數序列被生成。srand unsigned ti...

隨機數種子

隨機數就是就隨機數種子中取出的數。種子就是個序號,這個序號交給乙個數列管理器,通過這個序號,你從管理器中取出乙個數列,這個數列就是你通過那個序號得到的隨機數。但這個隨技術並不真正隨機。因為它是通過某個演算法的得到。也就是說你給數列管理器同乙個序號將得到同樣乙個 隨機 數列。也就是說種子和隨機數列是一...