C語言rand 函式產生隨機數

2021-08-20 14:59:35 字數 1813 閱讀 1829

#include 

#include

int main()

//產生1~6之間的隨機數;

執行結果:

函式一:int rand(void); 

返回乙個[0,rand_max]間的隨機整數。 

函式二:void srand(unsigned seed); 

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

系統在呼叫rand()之前都會自動呼叫srand(),如果在srand()裡給引數seed指定了乙個值(這裡指定的值是當前時間),那麼 rand()就會將seed的值作為產生偽隨機數的初始值;而如果使用者在rand()前沒有呼叫過srand(),那麼系統預設將1作為偽隨機數的初始值,如果初始值是此時的1或是其他定值,那麼每次rand()產生的隨機數序列都是一樣的,這也就是所謂的「偽隨機數」。 

值得注意的是,如果srand()括號中沒有argument的話,程式是會報錯的,因為在函式原型中,srand()函式是要求加上內容的。簡而言之,即有如下點:

srand()可以被認為是為rand()的「偽隨機數」的結果指定乙個固定的序列,若未引用srand()函式,則程式預設srand()括號中的值為1;如果引用的話,srand()括號中不能為空;

為了確保生成的隨機數為盡可能符合概率上的隨機,需要呼叫乙個函式time()(是指返回自 unix 紀元(january 1 1970 00:00:00 gmt)起的當前時間的秒數的函式,主要用來獲取當前的系統時間,返回的結果是乙個time_t型別),這個函式包含在標頭檔案time.h裡,在生成隨機數的呼叫下需強制型別轉換為(unsigned)time(),後面乙個括號中必須填入(unsigned)time(null)或(unsigned)time(0)。

如果你要求產生的隨機數在某一範圍x~y之內的話,只需要做如下處理即可:rand()%(x-y+1)+x;

再來舉乙個例子吧:

time limit: 1000 ms

memory limit: 65536 kib

special judge

submit

statistic

problem description

復仇者聯盟沒有能夠阻止滅霸那個毀滅一半生命的響指,宇宙中一半的生命就此消失。有乙個遙遠的星球: cyk 星,也不可避免的死亡了一半的 cyk 。

cyk 星上一共有 6 個 cyk 

- cyk0

- cyk1

- cyk2

- cyk3

- cyk4

- cyk5

受到滅霸響指的影響,死去了 3 個 cyk ,現在請你給出死去的這 3 個 cyk 的名字。

input

沒有輸入。

output

每行乙個,輸出死去的 cyk 的名字,順序不限。

sample input

sample output

cyk0

cyk1

cyk2

hint

注意:每次提交題目都對應乙個新的平行世界,因此死亡的 cyk 與其他世界的可能不同,但一定是 3 個(這句話的意思就是一次提交**能不能ac完全看你個人運氣,但如果你**沒問題,那你早晚會ac,時間問題。本人提交10次ac)

source

meik

**如下:

#include#include#includeint main()}}

for(i=0; i<3; i++)

}

c 隨機數函式rand

c語言中rand 函式生成隨機數的用法 詳細介紹 1 使用該函式首先應在開頭包含標頭檔案stdlib.h include c 建議使用 include,下同 2 在標準的c庫中函式rand 可以生成0 rand max之間的乙個隨機數,其中rand max 是stdlib.h 中定義的乙個整數,它與...

rand 和 srand產生隨機數

在c語言中,rand 函式可以用來產生隨機數,但是這不是真真意義上的隨機數,是 乙個偽隨機數,是根據乙個數,我們可以稱它為種子,為基準以某個遞推公式推算出來的一係數,當這系列數很大的時候,就符合正態公布,從而相當於產生了隨機 數,但這不是真正的隨機數,當計算機正常開機後,這個種子的值是定了的,除非你...

c語言隨機數rand()筆記

標準庫 中 int rand void 函式是真正的隨機數生成函式,但是每次用rand 需要用srand設定的種子來產生隨機數。如果你不呼叫srand,系統會在rand之前自動加乙個srand 1 但是這樣一來種子就是固定的了,隨機數也是固定的,所以rand 也稱偽隨機數。為了達到真正的隨機,那麼關...