日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
詳解C++rand與srand使用方法

rand()的功能:隨機(jī)數(shù)發(fā)生器,srand()的功能:初始化隨機(jī)數(shù)發(fā)生器。

創(chuàng)新互聯(lián)建站10多年成都企業(yè)網(wǎng)站定制服務(wù);為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及高端網(wǎng)站定制服務(wù),成都企業(yè)網(wǎng)站定制及推廣,對(duì)石雕等多個(gè)行業(yè)擁有豐富的網(wǎng)站制作經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。

計(jì)算機(jī)的隨機(jī)數(shù)都是由偽隨機(jī)數(shù),即是由小M多項(xiàng)式序列生成的,其中產(chǎn)生每個(gè)小序列都有一個(gè)初始值,即隨機(jī)種子。(注意: 小M多項(xiàng)式序列的周期是65535,即每次利用一個(gè)隨機(jī)種子生成的隨機(jī)數(shù)的周期是65535,當(dāng)你取得65535個(gè)隨機(jī)數(shù)后它們又重復(fù)出現(xiàn)了。)

我們知道 rand() 函數(shù)可以用來(lái)產(chǎn)生隨機(jī)數(shù),但是這不是真正意義上的隨機(jī)數(shù),是一個(gè)偽隨機(jī)數(shù),是根據(jù)一個(gè)數(shù)(我們可以稱它為種子)為基準(zhǔn)以某個(gè)遞推公式推算出來(lái)的一系列數(shù),當(dāng)這系列數(shù)很大的時(shí)候,就符合正態(tài)公布,從而相當(dāng)于產(chǎn)生了隨機(jī)數(shù),但這不是真正的隨機(jī)數(shù),當(dāng)計(jì)算機(jī)正常開機(jī)后,這個(gè)種子的值是定了的,除非你破壞了系統(tǒng)。

1.rand()

功能:

隨機(jī)數(shù)發(fā)生器

用法:

int rand(void)

所在頭文件:

stdlib.h

rand() 的內(nèi)部實(shí)現(xiàn)是用線性同余法做的,它不是真的隨機(jī)數(shù),因其周期特別長(zhǎng),故在一定的范圍里可看成是隨機(jī)的。

rand() 返回一隨機(jī)數(shù)值的范圍在 0 至 RAND_MAX 間。RAND_MAX 的范圍最少是在 32767 之間(int)。用 unsigned int 雙字節(jié)是 65535,四字節(jié)是 4294967295 的整數(shù)范圍。0~RAND_MAX 每個(gè)數(shù)字被選中的機(jī)率是相同的。

用戶未設(shè)定隨機(jī)數(shù)種子時(shí),系統(tǒng)默認(rèn)的隨機(jī)數(shù)種子為 1。

rand() 產(chǎn)生的是偽隨機(jī)數(shù)字,每次執(zhí)行時(shí)是相同的; 若要不同, 用函數(shù) srand() 初始化它。

2.srand()

功能:

初始化隨機(jī)數(shù)發(fā)生器

用法:

void srand(unsigned int seed)

所在頭文件:

stdlib.h

srand() 用來(lái)設(shè)置 rand() 產(chǎn)生隨機(jī)數(shù)時(shí)的隨機(jī)數(shù)種子。參數(shù) seed 必須是個(gè)整數(shù),如果每次 seed 都設(shè)相同值,rand() 所產(chǎn)生的隨機(jī)數(shù)值每次就會(huì)一樣。

3.使用當(dāng)前時(shí)鐘作為隨機(jī)數(shù)種子

rand() 產(chǎn)生的隨機(jī)數(shù)在每次運(yùn)行的時(shí)候都是與上一次相同的。若要不同, 用函數(shù) srand() 初始化它??梢岳?srand((unsigned int)(time(NULL)) 的方法,產(chǎn)生不同的隨機(jī)數(shù)種子,因?yàn)槊恳淮芜\(yùn)行程序的時(shí)間是不同的。

4.產(chǎn)生隨機(jī)數(shù)的用法

  1. 給srand()提供一個(gè)種子,它是一個(gè)unsigned int類型;
  2. 調(diào)用rand(),它會(huì)根據(jù)提供給srand()的種子值返回一個(gè)隨機(jī)數(shù)(在0到RAND_MAX之間);
  3. 根據(jù)需要多次調(diào)用rand(),從而不間斷地得到新的隨機(jī)數(shù);
  4. 無(wú)論什么時(shí)候,都可以給srand()提供一個(gè)新的種子,從而進(jìn)一步”隨機(jī)化”rand()的輸出結(jié)果。

0~RAND_MAX 之間的隨機(jī)數(shù)程序

#include
#include
#include  

using namespace std;

int main()
{
       srand((unsigned)time(NULL));
       for(int i = 0; i '/t';
       cout return 0;
}

5.產(chǎn)生一定范圍隨機(jī)數(shù)的通用表示公式

要取得 [a,b) 的隨機(jī)整數(shù),使用 (rand() % (b-a))+ a;

要取得 [a,b] 的隨機(jī)整數(shù),使用 (rand() % (b-a+1))+ a;

要取得 (a,b] 的隨機(jī)整數(shù),使用 (rand() % (b-a))+ a + 1;

通用公式: a + rand() % n;其中的 a 是起始值,n 是整數(shù)的范圍。

要取得 a 到 b 之間的隨機(jī)整數(shù),另一種表示:a + (int)b * rand() / (RAND_MAX + 1)。

要取得 0~1 之間的浮點(diǎn)數(shù),可以使用 rand() / double(RAND_MAX)。


網(wǎng)站欄目:詳解C++rand與srand使用方法
本文URL:http://www.dlmjj.cn/article/cdijcoc.html