srand是用來設置隨機時間的種子,一般與rand()結(jié)合使用。否則直接用rand()的話,每次運行程序的結(jié)果都相同。
創(chuàng)新互聯(lián)是一家專注網(wǎng)站建設、網(wǎng)絡營銷策劃、微信小程序開發(fā)、電子商務建設、網(wǎng)絡推廣、移動互聯(lián)開發(fā)、研究、服務為一體的技術(shù)型公司。公司成立十多年以來,已經(jīng)為近1000家成都假山制作各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務。現(xiàn)在,服務的近1000家客戶與我們一路同行,見證我們的成長;未來,我們一起分享成功的喜悅。
函數(shù)定義:int rand(void)函數(shù)功能:產(chǎn)生一個隨機數(shù) 函數(shù)說明:rand函數(shù)產(chǎn)生的隨機數(shù)嚴格意義講不是真正的隨機數(shù),它里面采用了線性同余法計算出隨機數(shù),所謂的線性同語法簡單來說就是使用了一個公式。
在標準的C庫中函數(shù)rand()可以生成0~RAND_MAX之間的一個隨機數(shù),其中RAND_MAX 是stdlib.h 中定義的一個整數(shù),它與系統(tǒng)有關(guān)。
在調(diào)用rand()函數(shù)之前,可以使用srand()函數(shù)設置隨機數(shù)種子,如果沒有設置隨機數(shù)種子,rand()函數(shù)在調(diào)用時,自動設計隨機數(shù)種子為1。隨機種子相同,每次產(chǎn)生的隨機數(shù)也會相同。
1、因為rand的內(nèi)部實現(xiàn)是用線性同余法做的,他不是真的隨機數(shù),只不過是因為其周期特別長,所以有一定的范圍里可看成是隨機的,rand()會返回一隨機數(shù)值,范圍在0至RAND_MAX 間。
2、srand((int)time(NULL))用于設定隨機數(shù)種子。 rand()%100,產(chǎn)生0-99的隨機數(shù)。如果要產(chǎn)生16-59之間的數(shù),可以這樣寫:rand()%44+16(這里44由59-16+1得到)。其他情況與此雷同。
3、調(diào)用srand(time(NULL))設置隨機數(shù)種子。2 調(diào)用rand函數(shù)獲取一個或一系列隨機數(shù)。需要注意的是,srand只需要在所有rand調(diào)用前,被調(diào)用一次即可,沒必要調(diào)用多次。以下是隨機獲取10個整型值并輸出的例子,輔助理解。
4、rand()會返回一隨機數(shù)值,范圍在0至RAND_MAX 間。在調(diào)用此函數(shù)產(chǎn)生隨機數(shù)前,必須先利用srand()設好隨機數(shù)種子,如果未設隨機數(shù)種子,rand()在調(diào)用時會自動設隨機數(shù)種子為1。關(guān)于隨機數(shù)種子請參考srand()。
5、rand()是C語言中產(chǎn)生隨機數(shù)的一個函數(shù),但是需要注意的是,產(chǎn)生的是偽隨機數(shù)。
6、rand()函數(shù)產(chǎn)生隨機數(shù)的原理···不清楚。但是他是一個#includestdlib.h 里的函數(shù)。他的范圍是0-RAND_MAX...這個值不小于32767(這是ANSI標準規(guī)定的)提到這個,順便幫樓主提一下。這個是偽隨機數(shù)。
偽隨機數(shù)。當“種子”固定時,它產(chǎn)生的隨機數(shù)序列是不變的,例如產(chǎn)生10個數(shù),這10個數(shù)大小是變化的,但只要用這個種子,每次產(chǎn)生的這10個數(shù)序列,是一模一樣的。
c語言提供了一些庫函數(shù)來實現(xiàn)隨機數(shù)的產(chǎn)生。
“srand(time(NULL));”這條指令的意思是利用系統(tǒng)時間來初始化系統(tǒng)隨機數(shù)的種子值,使得每次運行由于時間不同產(chǎn)生而產(chǎn)生不同的隨機數(shù)序列。srand函數(shù)是隨機數(shù)發(fā)生器的初始化函數(shù)。
1、代碼里的srand(time(0))的意思是:用當前時間來設定rand函數(shù)所用的隨機數(shù)產(chǎn)生演算法的種子值。其中,time(time_t *t); 是C標準庫函數(shù),如果t是空指針,直接返回當前時間。
2、srand(time(0)) 就是給這個算法一個啟動種子,也就是算法的隨機種子數(shù),用1970.1至今的秒數(shù),初始化隨機數(shù)種子。Srand是種下隨機種子數(shù),你每回種下的種子不一樣,用Rand得到的隨機數(shù)就不一樣。
3、srand(time(0));設種子,就會因時間變化,得到不同的種子,那么隨機數(shù)序列就會變化。time(0)是當前時間,(精度可能是毫秒)。只要兩次跑程序啟動時間差別 超過1毫秒,兩個序列就不同了(隨機)。
名稱欄目:c語言srand函數(shù)作用 c++srand函數(shù)用法
文章轉(zhuǎn)載:http://chinadenli.net/article28/diosgcp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供建站公司、全網(wǎng)營銷推廣、微信小程序、網(wǎng)頁設計公司、網(wǎng)站維護、標簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)