一、關於rand():
首先我們須了解:
①rand()函式包含在中。
②rand()函式定義:int rand(void);
②rand()函式產生的隨機數範圍為0-0x7fff,即0-32767。(事實上根據編譯器的不同範圍也會不同,但都為0~rand_max )
了解以上之後,我們試著產生10個偽隨機數。
#include
#include
intmain()
return0;
}
執行結果後我們發現確實產生了10個偽隨機數,但是多次執行後又發現,這10個數字始終不變。為了進一步確保隨機性,我們使用隨機種子。
二、關於srand():
首先我們須了解:
①srand()函式包含在中。
②srand()函式定義 : void srand (unsigned int seed);
③在呼叫rand()函式產生隨機數前,必須先利用srand()設好隨機數種子(seed), 如果未設隨機數種子, rand()在呼叫時會自動設隨機數種子為1。
了解以上之後我們才終於發現為什麼上面出現的情況:上面的例子就是因為沒有設定隨機數種子,每次隨機數種子都自動設成相同值1 ,進而導致rand()所產生的隨機數值都一樣。
於是我們改進了**。
#include
#include
intmain()
return0;
}
多次執行後發現,我們輸入的seed不同,產生的隨機數也不同。但是我們又有了新的困惑:能不能不需要使用者每次都輸入seed,自己產生seed生成隨機數可以嗎?
三、關於time()
首先我們須了解:
①time()函式包含於中。
②time()函式定義:time_t time(time_t *seconds);
③該函式返回乙個值,即格林尼治時間2023年1月1日00:00:00到當前時刻的時長,時長單位是秒。
④time()函式有兩種使用方式: t1=time(null)或t1=time(0)
了解以上後,我們何不將time(0)返回的值作為seed呢?這樣即能實現每次的seed都是隨機的,又不用人為輸入。
#include
#include
#include
intmain()
return0;
}
多次執行後發現,每次產生的10個隨機數確實不盡相同。 c語言rand函式
include include includemain 其實rand一點都不隨機 一直都是410 184670 63340 265000 191690 press any key to continue 函式說明 因為rand的內部實現是用線性同餘法做的,他不是真的隨機數,只不過是因為其週期特別長,...
C語言中rand函式
rand函式功能為獲取乙個偽隨機數 偽隨機數的概念下面會有介紹 一 函式名 rand 二 宣告 int rand 三 所在標頭檔案 stdlib.h 四 功能 返回乙個偽隨機數。之所以說是偽隨機數,是因為在沒有其它操作下,每次執行同乙個程式,呼叫rand得到的隨機數序列是固定的 不是真正的 隨機 五...
C語言中的rand 函式
rand函式,c語言中用來產生乙個隨機數的函式。rand函式界限 stdlib.h標頭檔案中有巨集 define rand max 0x7fff rand產生乙個0 0x7fff的隨機數,即最大是32767的乙個數 rand函式原型 include int rand void rand函式呼叫 sr...