W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
大多數(shù)計(jì)算機(jī)程序在執(zhí)行的時(shí)候做著同樣的事情,所以它們被稱(chēng)作確定性的。通常,確定性是一個(gè)好處,我們都期望計(jì)算產(chǎn)生相同的結(jié)果。例如某些程序,我們卻希望計(jì)算機(jī)不準(zhǔn)確。游戲是一個(gè)顯著的例子。
寫(xiě)一個(gè)真的不確定的程序似乎沒(méi)那么容易,但是有些許方法至少可以產(chǎn)生看起來(lái)比較不確定的結(jié)果。其中一個(gè)就是生成偽隨機(jī)數(shù)來(lái)決定程序的輸出。偽隨機(jī)數(shù)不是真正數(shù)學(xué)意義上的隨機(jī),但我們?yōu)榱诉_(dá)到目的,我們必須這么做。
C++提供一個(gè)函數(shù)叫做random用于生成隨機(jī)數(shù)。它被聲明是stdlib.h頭文件中,這個(gè)文件包含了各種各樣的“標(biāo)準(zhǔn)庫(kù)”函數(shù),所以取了這個(gè)名字。
從random返回是值是一個(gè)在0到RAND_MAX之間的整型數(shù),RAND_MAX是一個(gè)非常大的數(shù)字(在我的計(jì)算機(jī)里大約是20億)當(dāng)然,它也是定義在頭文件中。你每一次調(diào)用random時(shí),你都會(huì)得到一個(gè)不同的隨機(jī)生產(chǎn)的數(shù)值??聪旅娴囊粋€(gè)例子,運(yùn)行在一個(gè)循環(huán)中:
for (int i = 0; i < 4; i++) {
int x = random ();
cout << x << endl;
}
在我在我的機(jī)器上得到以下的輸出:
1804289383
846930886
1681692777
1714636915
你可能會(huì)得到一些類(lèi)似,但在你的計(jì)算機(jī)上是會(huì)得到不同的結(jié)果。
當(dāng)然,我們不希望得到一個(gè)巨大的整型數(shù)。更多的情況我們想生成一個(gè)從0到我們所規(guī)定的上限值之間的整型數(shù)。一個(gè)簡(jiǎn)單的方法就是使用求模運(yùn)算。例如:
int x = random ();
int y = x % upperBound;
y是x對(duì)upperBound求模余數(shù),y的值只能是在0到upperBound-1之間,包括兩端的值。記住,y無(wú)論怎樣都不會(huì)等于upperBound。
它通常也頻繁用作生成隨機(jī)浮點(diǎn)數(shù)。一個(gè)常見(jiàn)的方法是出于RAND_MAX。例如:
int x = random ();
double y = double(x) / RAND_MAX;
這些代碼將使y的隨機(jī)值在0.0到1.0之間,包括兩端的值。作為一個(gè)練習(xí),你可能會(huì)思考如何生成一個(gè)隨機(jī)浮點(diǎn)數(shù)在給定的范圍中。例如在100.0到200.0之間。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: