rand,srand自我總結

2021-06-20 17:47:49 字數 1390 閱讀 5582

rand(),srand(int seed)函式自我總結:

srand初始化隨機種子,rand產生隨機數

(1) rand:

表頭檔案:#include

函式頭: int rand()

rand()會返回一隨機數值,範圍在0至rand_max 間。

rand_max是庫中定義的常量、

(2)函式二:void   srand(unsigned   seed); 

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

srand(seed);放在迴圈體外;

(3)解析:

可以認為rand()在每次被呼叫的時候,它會檢視: 

1)如果使用者在此之前呼叫過srand(seed),給seed指定了乙個值,那麼它會自動呼叫 

srand(seed)一次來初始化它的起始值。 

2)如果使用者在此之前沒有呼叫過srand(seed),它會自動呼叫srand(1)一次。

根據上面的第一點我們可以得出: 

1)如果希望rand()在每次程式執行時產生的值都不一樣,必須給srand(seed)中的seed乙個變值,

這個變值必須在每次程式執行時都不一樣(比如到目前為止流逝的時間)。 

2) 否則,如果給seed指定的是乙個定值,那麼每次程式執行時rand()產生的值都會一樣,

3)如果在呼叫rand()之前沒有呼叫過srand(seed),效果將和呼叫了srand(1)再呼叫rand()一樣(1也是乙個定值)。 

(4).範例:

舉幾個例子,假設我們要取得0~6之間的隨機整數(不含6本身): 

例一,不指定seed: 

for(int   i=0;i <10;i++)

return 0;

}結果產生的全是3.

範例2:

#include"stdio.h"

#include

#include"time.h"

int main()

return 0;

結果產生的全是3.

解析::

假設srand(1)後產生乙個這樣的隨機數組

arr =

然後你第一次呼叫rand就得到123,第二次呼叫就是345,第三次就是49.....

如果某時刻你再srand,就再重新生成這個陣列,(因為seed相同所以產生的陣列相同)並且rand會重新從第乙個開始取 

所以srand ,如果放在迴圈體內,如srand(1)或者srand(time(0))則在迴圈體內返回的都是相同的隨機數。

因為每次srand(1)時,產生乙個隨機數組,然後呼叫rand都是從隨機數組中第一次找數:每次srand(1)都會產生想太多 隨機數組。

srand(time(0))是由於執行時間過短,然後time(0)產生的值都相同。

自我總結 20170804自我總結

昨天在工作了一年多的公司離職了。2016年6月27日入職九章雲極科技 到2017年8月3日。短短一年之內,自己從乙個新人混到了老員工,自己入職的時候才26個人,目前有80 預計下個月達到100人。自己也在公司內部經歷了轉崗。非常感謝能在畢業的時候,被越哥選中,慢慢的一年內學習了如何做資料整合,自己也...

隨機函式rand srand

一 隨機函式 產生數的函式,庫函式中系統提供了兩個函式用於產生隨機數 srand 和rand 二 偽隨機數 偽隨機數是在一定的數值範圍內,由隨機種子採用一定的演算法計算出來乙個數字做為結果顯示,盡量保證演算法公平使得產生的結果接近隨機數。其實rand srand是通過設定乙個隨機種子 數值形式 用來...

java自我總結

動態 動態 可以提供對另乙個物件的訪問,同時隱藏實際物件的具體事實,一般會實現它所表示的實際物件的介面。可以訪問實際物件,但是 延遲實際物件的部分功能,實際物件實現系統的實際功能,物件對客戶 隱藏了實際物件,客戶不知道它是與 打交道還是與實際物件打交道。動態 其實就是給實際物件類包裝了一層,在呼叫實...