rand()和srand()應該是初學者最先接觸到的隨機函式了,今天博主就這兩個函式陳述一下自己的理解。
這兩個函式的使用規範如下:
/*這是乙個模擬擲色子1800次的程式*/
#include
#include
int main()
系統在呼叫rand()之前都會自動呼叫srand(),如果在srand()裡給引數seed指定了乙個值(這裡指定的值是當前時間),那麼 rand()就會將seed的值作為產生偽隨機數的初始值;而如果使用者在rand()前沒有呼叫過srand(),那麼系統預設將1作為偽隨機數的初始值,如果初始值是此時的1或是其他定值,那麼每次rand()產生的隨機數序列都是一樣的,這也就是所謂的「偽隨機數」。
值得注意的是,如果srand()括號中沒有argument的話,程式是會報錯的,因為在函式原型中,srand()函式是要求加上內容的。
簡而言之,即有如下點:
rand()函式可以生成乙個[0,rand_max]間的隨機整數;(iso iec 9899 2011 (c11)標準中未規定 rand_max 的具體數值。但該標準規定了rand_max 的值應至少為32767。程式設計的時候,不應該對 rand_max 的具體數值做任何假設。)
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)。
C語言隨機函式的使用
在程式設計中,難免會使用到隨機值函式,其原理與語法大多類似,接下來以c語言為例介紹其隨機值函式rand 用法。原理 include rand 函式是按指定的順序來產生整數,因此每次執行上面的語句都列印相同的兩個值,所以說c語言的 隨機並不是真正意義上的隨機,有時候也叫 偽隨機數 wei 使用 ran...
c語言 隨機函式
c語言 隨機函式 include rand srand 標準c庫中函式rand 可以生成0 rand max 之間的乙個隨機數,其中rand max 是stdlib.h 中定義的乙個整數,它與系統有關。rand 函式沒有輸入引數,直接通過表示式rand 來引用 例如可以用下面的語句來列印兩個隨機數 ...
隨機函式 C語言
有時對於一些程式,我是想寫乙個常用排序教程的合編 測試時需要輸入好多的測試資料,好麻煩呀,用隨機函式怎麼樣?好呀,不過得學隨機函式,好辦,baidu,做筆記如下吧 一 srand函式 srand函式是隨機數發生器的初始化函式。原型 void srand unsigned seed 用法 先提供乙個種...