C語言 關於rand 函式的使用

2021-10-16 07:14:04 字數 1313 閱讀 9861

一、關於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...