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