一衅胀、課堂筆記
本周課程主要講了類(lèi)與類(lèi)之間的關(guān)系银锻,主要是三大類(lèi):繼承、復(fù)合和委托遭京,其中這三類(lèi)可以進(jìn)行組合胃惜。
二、課后補(bǔ)充學(xué)習(xí)
1哪雕、隨機(jī)數(shù)的生成
VC++中隨機(jī)數(shù)的生成使用<time.h>
(1)C++標(biāo)準(zhǔn)函數(shù)庫(kù)提供一隨機(jī)數(shù)生成器rand船殉,返回0-RAND_MAX之間均勻分布的偽隨機(jī)整數(shù)。 RAND_MAX必須至少為32767斯嚎。rand()函數(shù)不接受參數(shù)利虫,默認(rèn)以1為種子(即起始值)挨厚。 隨機(jī)數(shù)生成器總是以相同的種子開(kāi)始,所以形成的偽隨機(jī)數(shù)列也相同糠惫,失去了隨機(jī)意義疫剃。
(2)C++中另一函數(shù)srand(),可以指定不同的數(shù)(無(wú)符號(hào)整數(shù)變?cè)榉N子硼讽。但是如果種子相同巢价,偽隨機(jī)數(shù)列也相同。一個(gè)辦法是讓用戶(hù)輸入種子固阁,但是仍然不理想壤躲。
(3)比較理想的是用變化的數(shù),比如時(shí)間來(lái)作為隨機(jī)數(shù)生成器的種子备燃。?time的值每時(shí)每刻都不同碉克。所以種子不同,所以赚爵,產(chǎn)生的隨機(jī)數(shù)也不同棉胀。
可以使用srand()
#include
#include?
#include?
using?namespace?std;
#define?MAX?100
int?main(int?argc,?char*?argv[])
{?srand(?(unsigned)time(?NULL?)?);//srand()函數(shù)產(chǎn)生一個(gè)以當(dāng)前時(shí)間開(kāi)始的隨機(jī)種子.應(yīng)該放在for等循環(huán)語(yǔ)句前面?不然要很長(zhǎng)時(shí)間等待
for?(int?i=0;i<10;i++)
cout<
return?0;
}
或者使用rand()
rand()不需要參數(shù),它會(huì)返回一個(gè)從0到最大隨機(jī)數(shù)的任意整數(shù)冀膝,最大隨機(jī)數(shù)的大小通常是固定的一個(gè)大整數(shù)唁奢。 這樣,如果你要產(chǎn)生0~10的10個(gè)整數(shù)窝剖,可以表達(dá)為:
int?N?=?rand()?%?11;
這樣麻掸,N的值就是一個(gè)0~10的隨機(jī)數(shù),如果要產(chǎn)生1~10赐纱,則是這樣:
int?N?=?1?+?rand()?%?11;
總結(jié)來(lái)說(shuō)脊奋,可以表示為:
a?+?rand()?%?n
其中的a是起始值,n是整數(shù)的范圍疙描。? a?+?rand()?%?(b-a+1)?就表示〕舷丁a~b之間的一個(gè)隨機(jī)數(shù)若要0~1的小數(shù),則可以先取得0~10的整數(shù)起胰,然后均除以10即可得到隨機(jī)到十分位的10個(gè)隨機(jī)小數(shù)久又,若要得到隨機(jī)到百分位的隨機(jī)小數(shù),則需要先得到0~100的10個(gè)整數(shù)效五,然后均除以100地消,其它情況依此類(lèi)推。通常rand()產(chǎn)生的隨機(jī)數(shù)在每次運(yùn)行的時(shí)候都是與上一次相同的畏妖,這是有意這樣設(shè)計(jì)的脉执,是為了便于程序的調(diào)試。若要產(chǎn)生每次不同的隨機(jī)數(shù)戒劫,可以使用srand(?seed?)函數(shù)進(jìn)行隨機(jī)化半夷,隨著seed的不同婆廊,就能夠產(chǎn)生不同的隨機(jī)數(shù)。
本次作業(yè)產(chǎn)生隨機(jī)數(shù)采用rand函數(shù)
2玻熙、error C2065: 'null' : undeclared identifier
改為
修改后否彩,程序不報(bào)錯(cuò)
編譯結(jié)果: