C語言使用rand函式生成隨機數

2022-09-21 08:42:08 字數 1170 閱讀 9767

目錄

生成隨機數使用rand()函式

int rand (void);

標頭檔案目前該「隨機數」貌似成功生成

大家有木有發現其實這三次的執行結果生成的隨機數其實是一樣的,沒錯,我說的就是三次,

第一次是程式設計客棧41 18467 6334 26500 19169 15724 11478 29358 26962 24464,將這些數對100求餘

不就是41 67 34 0 69 24 78 58 62 64了嗎?

這些看似偶然的結果並不是精巧設計的,而是rand()函式需要一顆種子才能正確的生成我們所需要的隨機數,沒有該種子那麼使用rand()永遠都是一樣的結果

rand_max的值是0x7fff,十進位制即32767,可見rand()函式只會產生0到32767之間的偽隨機整數

這個數字是由乙個演算法生成的,該演算法在每次呼叫時返回一系列明顯無關的數字。該演算法使用種子來生成序列,通過函式srand將序列初始化為特定的值。

官方指明了使用srandwww.cppcns.com函式來生成乙個種子

發現srand函式原型是void srand(unsigned int seed),其中seed即種子的意思,所謂的種子無非就是乙個無符號整型。

標頭檔案這次生成的隨機數與前面的確實不一樣

發現結果並沒有改變,這是咋回事呢?

其實沒有使用srand之前,rand函式本身就有預設的種子,而sra程式設計客棧nd只是將其預設的種子改成了100而已,下次執行該**種子還是100,只要種子不變,那麼生成的隨機數永遠都是與該種子對應的,因此你要想每次執行都可以得到不同的隨機數,那就只能保證每次執行的種子不一樣,這樣問題就來了,種子也是要隨機的,這不就套娃了嗎?還好每次執行的時間是不一樣的,因此只需要將生成的種子與時間掛鉤就能保證每次執行的種子不一樣,因為時間包含了年月日時分秒,就保證了每一刻的時間是絕對不會相同的

標頭檔案文件中的核心內容就是給time傳個空指標null進去,它就將當前的時間以time_t型別進行返回,其中time_t其實就是int,只不過被用typedef進行了型別重新命名了而已,

小夥伴是否會有疑問乙個時間怎麼以整型進行表示呢?這裡就涉及到了時間戳的概念

時間戳: 當前時間與計算機起始時間的差值,單位是秒。

計算機的起始時間:1970-01-01 08:00:00(北京時間)

本文標題: c語言使用rand函式生成隨機數

本文位址:

c 隨機函式rand

一 c 中不能使用random 函式 random函式不是ansi c標準,不能在gcc,vc等編譯器下編譯通過。但在c語言中int random num 可以這樣使用,它返回的是0至num 1的乙個隨機數。可改用c 下的rand函式來實現。1 c 標準函式庫提供一隨機數生成器rand,返回0 ra...

C 隨機函式rand()

每次生成的隨機數都相同 include include rand intmain 每次生成的隨機數都不同 include include include time intmain include include include intmy rand2 a 0 放陣列的組長 include inclu...

C 隨機函式 rand

使用 rand 函式可以獲取 隨機數大小是在0到rand max,值為2147483647,它是在stdlib中定義的,如果我們希望在某個範圍內,可以使用 結合 來實現 但是不難發現,這裡獲得的隨機數是唯一確定的,而不是變化的。所以,如果我們希望獲得變化的隨機數,可以使用下面的方法。因為rand的內...