1、srand是用來設(shè)置隨機(jī)時間的種子,一般與rand()結(jié)合使用。否則直接用rand()的話,每次運(yùn)行程序的結(jié)果都相同。
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序制作、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了和龍免費(fèi)建站歡迎大家使用!
2、函數(shù)定義:int rand(void)函數(shù)功能:產(chǎn)生一個隨機(jī)數(shù) 函數(shù)說明:rand函數(shù)產(chǎn)生的隨機(jī)數(shù)嚴(yán)格意義講不是真正的隨機(jī)數(shù),它里面采用了線性同余法計算出隨機(jī)數(shù),所謂的線性同語法簡單來說就是使用了一個公式。
3、在標(biāo)準(zhǔn)的C庫中函數(shù)rand()可以生成0~RAND_MAX之間的一個隨機(jī)數(shù),其中RAND_MAX 是stdlib.h 中定義的一個整數(shù),它與系統(tǒng)有關(guān)。
1、srand函數(shù)是隨機(jī)數(shù)發(fā)生器的初始化函數(shù)。原型:void srand(unsigned seed);rand函數(shù)用來產(chǎn)生隨機(jī)數(shù),當(dāng)然是偽隨機(jī)數(shù)。
2、用法: void srand(unsigned int seed)所在頭文件: stdlib.h srand()用來設(shè)置rand()產(chǎn)生隨機(jī)數(shù)時的隨機(jī)數(shù)種子。參數(shù)seed必須是個整數(shù),如果每次seed都設(shè)相同值,rand()所產(chǎn)生的隨機(jī)數(shù)值每次就會一樣。
3、rand()函數(shù),一般根srand()函數(shù)一起用。它們在一起,作用是:產(chǎn)生一個隨機(jī)數(shù)。通常格式為:srand ( (unsigned) time (NULL) );a=rand()%x; //a,x,均為整型變量,其中,x在之前應(yīng)被賦值。
srand(time(NULL)):這是兩個函數(shù),一個是srand函數(shù),這是在調(diào)用rand()這個函數(shù)之前使用的,rand()是一個產(chǎn)生隨機(jī)數(shù)的函數(shù),而srand是一個設(shè)置隨機(jī)數(shù)種子的函數(shù),通常這兩個函數(shù)是一起使用的,來完成產(chǎn)生隨機(jī)數(shù)的功能。
srand()函數(shù)用來設(shè)置算法的種子,time(NULL)返回當(dāng)前的時間,先調(diào)用srand(time(NULL))是把當(dāng)前的時間作為種子,是程序每次運(yùn)行產(chǎn)生不同的隨機(jī)數(shù)序列。
如: srand(1); 直接使用1來初始化種子。
time(time_t time);該函數(shù)返回自計算機(jī)計時的某個時刻起到現(xiàn)在所過去的秒數(shù)。一般是返回自1970年1月1日00:00:00以來,到調(diào)用函數(shù)的時刻所累積的秒數(shù)。
1、因為rand的內(nèi)部實(shí)現(xiàn)是用線性同余法做的,他不是真的隨機(jī)數(shù),只不過是因為其周期特別長,所以有一定的范圍里可看成是隨機(jī)的,rand()會返回一隨機(jī)數(shù)值,范圍在0至RAND_MAX 間。
2、srand((int)time(NULL))用于設(shè)定隨機(jī)數(shù)種子。 rand()%100,產(chǎn)生0-99的隨機(jī)數(shù)。如果要產(chǎn)生16-59之間的數(shù),可以這樣寫:rand()%44+16(這里44由59-16+1得到)。其他情況與此雷同。
3、調(diào)用srand(time(NULL))設(shè)置隨機(jī)數(shù)種子。2 調(diào)用rand函數(shù)獲取一個或一系列隨機(jī)數(shù)。需要注意的是,srand只需要在所有rand調(diào)用前,被調(diào)用一次即可,沒必要調(diào)用多次。以下是隨機(jī)獲取10個整型值并輸出的例子,輔助理解。
4、rand()會返回一隨機(jī)數(shù)值,范圍在0至RAND_MAX 間。在調(diào)用此函數(shù)產(chǎn)生隨機(jī)數(shù)前,必須先利用srand()設(shè)好隨機(jī)數(shù)種子,如果未設(shè)隨機(jī)數(shù)種子,rand()在調(diào)用時會自動設(shè)隨機(jī)數(shù)種子為1。關(guān)于隨機(jī)數(shù)種子請參考srand()。
5、rand()是C語言中產(chǎn)生隨機(jī)數(shù)的一個函數(shù),但是需要注意的是,產(chǎn)生的是偽隨機(jī)數(shù)。
6、rand()函數(shù)產(chǎn)生隨機(jī)數(shù)的原理···不清楚。但是他是一個#includestdlib.h 里的函數(shù)。他的范圍是0-RAND_MAX...這個值不小于32767(這是ANSI標(biāo)準(zhǔn)規(guī)定的)提到這個,順便幫樓主提一下。這個是偽隨機(jī)數(shù)。
1、代碼里的srand(time(0))的意思是:用當(dāng)前時間來設(shè)定rand函數(shù)所用的隨機(jī)數(shù)產(chǎn)生演算法的種子值。其中,time(time_t *t); 是C標(biāo)準(zhǔn)庫函數(shù),如果t是空指針,直接返回當(dāng)前時間。
2、srand(time(0)) 就是給這個算法一個啟動種子,也就是算法的隨機(jī)種子數(shù),用1970.1至今的秒數(shù),初始化隨機(jī)數(shù)種子。Srand是種下隨機(jī)種子數(shù),你每回種下的種子不一樣,用Rand得到的隨機(jī)數(shù)就不一樣。
3、srand(time(0));設(shè)種子,就會因時間變化,得到不同的種子,那么隨機(jī)數(shù)序列就會變化。time(0)是當(dāng)前時間,(精度可能是毫秒)。只要兩次跑程序啟動時間差別 超過1毫秒,兩個序列就不同了(隨機(jī))。
4、如: srand(1); 直接使用1來初始化種子。