陳 凱 王 卿
小王為即將到來的游藝會(huì)準(zhǔn)備抽獎(jiǎng)游戲,他有一個(gè)好主意,讓每個(gè)抽獎(jiǎng)?wù)呷佑矌?正面朝上則抽到白巧克力,反面朝上則抽到黑巧克力。有趣的是,如果抽到的是白巧克力,就被允許再次抽獎(jiǎng),而抽到黑巧克力的,就直接“Game Over”!但讓小王有點(diǎn)困惑的事情是,他是不是應(yīng)該多購(gòu)買一些白巧克力作為獎(jiǎng)品呢?
假如稍微了解一點(diǎn)概率學(xué)知識(shí)的話,應(yīng)該能很快想到答案。若是對(duì)概率學(xué)一無所知,那么用簡(jiǎn)單的程序代碼也能得出結(jié)論:不同巧克力分發(fā)出去的概率總是趨近于5比5。不過下面的三個(gè)問題,就要費(fèi)一點(diǎn)腦筋來解決了。
問題1:假如獎(jiǎng)品都已分發(fā)出去,那么可以想見的是,有些人手里拿到的白巧克力更多些,而有些人拿到的黑巧克力更多些。但究竟是拿到白巧克力的人多,還是拿到黑巧克力的人多呢?雖然這個(gè)問題念起來比較拗口,但用邏輯推理,解決起來并不是很困難。我相信大家能夠編出程序驗(yàn)證自己推理的結(jié)果。
問題2:小王除了購(gòu)買白巧克力和黑巧克力外,還準(zhǔn)備購(gòu)買一批杏仁巧克力作為驚喜獎(jiǎng)。首先,仍然按上述抽獎(jiǎng)規(guī)則分發(fā)白巧克力和黑巧克力。若抽獎(jiǎng)?wù)吣玫降氖前浊煽肆?以白巧克力的數(shù)量為n,計(jì)算出2n,得出的結(jié)果便是向該抽獎(jiǎng)?wù)甙l(fā)放杏仁巧克力的數(shù)量。例如,圖1中第一位抽獎(jiǎng)?wù)叩那煽肆π蛄惺恰鞍装缀凇?那么他就可以獲得4顆杏仁巧克力;而圖1中最后一位抽獎(jiǎng)?wù)叩那煽肆π蛄兄杏形鍓K白巧克力,那么她就很幸運(yùn)地獲得了32顆杏仁巧克力??蓪?duì)于采購(gòu)獎(jiǎng)品的小王來說,一方面,要避免獎(jiǎng)品不足的尷尬;另一方面,又不能買太多的獎(jiǎng)品導(dǎo)致浪費(fèi)。究竟應(yīng)該準(zhǔn)備多少顆杏仁巧克力作為獎(jiǎng)品?小王十分困惑。你能不能通過編寫程序,幫助小王計(jì)算出每個(gè)抽獎(jiǎng)?wù)呖赡塬@得的杏仁巧克力的平均值呢?
問題3:小王更改了游戲規(guī)則,假如抽獎(jiǎng)?wù)呖梢猿掷m(xù)扔硬幣,直到其獲得的巧克力產(chǎn)生“白黑”的序列,或是“白白”的序列,則“Game Over”!舉例說,可能產(chǎn)生圖2中的“黑黑黑黑白白”序列,也可能產(chǎn)生“黑黑黑黑白黑”這樣的序列。究竟是用“白黑”還是“白白”作為游戲結(jié)束標(biāo)志,由抽獎(jiǎng)?wù)呤孪葲Q定。那么抽獎(jiǎng)?wù)邞?yīng)該選擇哪一種結(jié)束標(biāo)志,才能使自己盡可能多地獲得巧克力呢?圖2所示是小王制作的程序,從窗體的列表中看,每一行序列都在出現(xiàn)“白白”或“白黑”模式的時(shí)候結(jié)束,小王認(rèn)為,兩種不同的序列獲得的巧克力總數(shù)基本持平,所以抽獎(jiǎng)?wù)哌x擇哪一種結(jié)束標(biāo)志都是無所謂的??墒钦?qǐng)注意,其實(shí)不用看代碼,只要審視列表中的數(shù)據(jù),就能猜到此程序代碼的思路是有問題的,問題出在哪里呢?(答案在本期找)