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()
{srand((int)time(0));
for(int x=0;x<10;x++)
printf("%d/n",random(100));
這樣兩次執行的結果就會不一樣了!!
謹記srand()不要呼叫兩次或兩次以上。。
void main()
{ for(int i=0;i<10;i++)
{ srand( (unsigned)time( null ) );
cout<
這樣呼叫的時候,因為cpu高速的關係,呼叫的srand( (unsigned)time( null ) ); 生成的種子數一樣。導致rand()
產生的隨機數也一樣。
改為:void main()
{srand( (unsigned)time( null ) );
for(int i=0;i<10;i++)
{ cout<
有時候這些錯誤很隱蔽,在建構函式中做了乙個check方法。在check方法中呼叫init方法,然後在init方法中產生隨
機數。注意如果srand( (unsigned)time( null ) ); 被寫進了check()或者init()等方法中,一定要保證該方法在構
造的時候只被呼叫一次。最好是把該行**srand( (unsigned)time( null ) );寫到建構函式中進行初始化種子的操
作。
C C 中怎樣產生隨機數
c語言 c 怎樣產生隨機數 這裡要用到的是rand 函式,srand 函式,c語言 c 裡沒有自帶的random int number 函式。1 如果你只要產生隨機數而不需要設定範圍的話,你只要用rand 就可以了 rand 會返回一隨機數值,範圍在0至rand max 間。rand max定義在s...
怎樣產生隨機數
問 怎樣產生隨機數?答 在計算機中並沒有乙個真正的隨機數發生器,但是可以做到使產生的數字重複率很低,這樣看起來好象是真正的隨機數,實現這一功能的程式叫偽隨機數發生器。有關如何產生隨機數的理論有許多,如果要詳細地討論,需要厚厚的一本書的篇幅。不管用什麼方法實現隨機數發生器,都必須給它提供乙個名為 種子...
C C 產生隨機數
c c 產生隨機數 c c 產生隨機數用到兩個函式rand 和 srand 一.不指定範圍產生隨機數 用到函式rand 函式原型為int rand 無引數。此時會產生乙個介於0 rand max間的整數。rand max的大小可以檢視,在include資料夾 linux在usr目錄 windows在...