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