姜穎
一、問(wèn)題的提出
通常,計(jì)算軟件采用類似rand()這樣的函數(shù)來(lái)產(chǎn)生隨機(jī)數(shù).如Scilab可以用rand()產(chǎn)生0~1之間的均勻隨機(jī)數(shù).為了產(chǎn)生m~n之間的隨機(jī)數(shù),我們采用變換rand()*(n-m)+m來(lái)實(shí)現(xiàn)(參見(jiàn)人教版普通高中課程標(biāo)準(zhǔn)實(shí)驗(yàn)教科書《數(shù)學(xué)》必修三第110頁(yè)).如果要求結(jié)果為隨機(jī)整數(shù),我們一般考慮將該隨機(jī)數(shù)嵌套進(jìn)取整函數(shù)中,以round(rand()*(n-m)+m)的方式進(jìn)行四舍五入.例如,在Scilab軟件中,我們可以利用round(rand()*9)隨機(jī)產(chǎn)生一個(gè)0~9之間的整數(shù).同樣地,在Visual Basic中,只需要將取整函數(shù)改為Int()即可.
若無(wú)其他要求,上述算法是簡(jiǎn)便可行的.但是,“隨機(jī)抽取整數(shù)”算法往往使用在對(duì)產(chǎn)品抽樣、抽簽等場(chǎng)合中,這些場(chǎng)合往往又有“抽到每一個(gè)數(shù)字的機(jī)會(huì)均等”的附帶要求.為驗(yàn)證上述算法的公平性,我們編寫程序以統(tǒng)計(jì)產(chǎn)生的隨機(jī)整數(shù).endprint