高 云
(山西大同大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院,山西大同037009)
基于DOM驗(yàn)證蒙提霍爾悖論的設(shè)計(jì)與實(shí)現(xiàn)
高 云
(山西大同大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院,山西大同037009)
蒙提霍爾悖論自誕生以來(lái),就受到許多博弈論愛好者的不斷研究,雖然最終驗(yàn)證了該悖論是成立的,但是研究者給出的論證大多都是深?yuàn)W難懂的數(shù)學(xué)公式和推論。為了使大多數(shù)讀者能夠直觀的理解該悖論的成立,這里采用了設(shè)計(jì)直觀頁(yè)面,讀者親自操作,最終通過(guò)統(tǒng)計(jì)實(shí)驗(yàn)數(shù)據(jù)得出概率的方式來(lái)幫助讀者對(duì)悖論成立的理解。進(jìn)行該項(xiàng)設(shè)計(jì)可以采用多種開發(fā)工具,而DOM無(wú)疑是一個(gè)非常適合的選擇,它允許程序和腳本動(dòng)態(tài)地訪問(wèn)和更新文檔的內(nèi)容、結(jié)構(gòu)和樣式,提供了標(biāo)準(zhǔn)的HTML和XML對(duì)象集,并有一個(gè)標(biāo)準(zhǔn)的接口來(lái)訪問(wèn)并操作它們,使頁(yè)面的設(shè)計(jì)實(shí)現(xiàn)變得簡(jiǎn)單方便。
DOM;ECMAScript;蒙提霍爾悖論;算法
蒙提霍爾悖論又叫做三門問(wèn)題(Monty Hall problem),是一個(gè)源自博弈論的數(shù)學(xué)游戲問(wèn)題,大致出自美國(guó)的電視游戲節(jié)目Let's Make a Deal。問(wèn)題的名字來(lái)自該節(jié)目的主持人蒙提·霍爾(Monty Hall)。
蒙提霍爾悖論問(wèn)世以來(lái),眾多的博弈論愛好者對(duì)其進(jìn)行了研究和驗(yàn)證,雖然研究結(jié)果最終證明了該悖論的成立,但是深?yuàn)W的數(shù)學(xué)公式以及推論過(guò)程使得大多數(shù)讀者很難理解該悖論成立的原因?;谶@種情況,本文設(shè)計(jì)了一種類似于游戲的交互頁(yè)面,使得讀者親自動(dòng)手實(shí)踐,最終使用統(tǒng)計(jì)實(shí)驗(yàn)數(shù)據(jù)得出換門后得到正確選擇的概率,驗(yàn)證了蒙特霍爾悖論。
這個(gè)游戲的玩法是:參賽者會(huì)看見三扇關(guān)閉了的門,其中一扇的后面有一輛汽車,選中后面有車的那扇門就可以贏得該汽車,而另外兩扇門后面則各藏有一只山羊。當(dāng)參賽者選定了一扇門,但未去開啟它的時(shí)候,節(jié)目主持人會(huì)開啟剩下兩扇門的其中一扇,露出其中一只山羊。主持人其后會(huì)問(wèn)參賽者要不要換另一扇仍然關(guān)上的門。問(wèn)題是:換另一扇門會(huì)否增加參賽者贏得汽車的機(jī)會(huì)率?如果嚴(yán)格按照上述的條件的話,答案是會(huì)—換門的話,贏得汽車的機(jī)會(huì)率是2/3。
這條問(wèn)題亦被叫做蒙提霍爾悖論:雖然該問(wèn)題的答案在邏輯上并不自相矛盾,但十分違反直覺。這問(wèn)題曾引起一陣熱烈的討論。
Mueser和Granberg透過(guò)在主持人的行為身上加上明確的限制條件,提出了對(duì)這個(gè)問(wèn)題的一種不含糊的陳述:
·參賽者在三扇門中挑選一扇。他并不知道內(nèi)里有什么;
·主持人知道每扇門后面有什么;
·主持人必須開啟剩下的其中一扇門,并且必須提供換門的機(jī)會(huì);
·主持人永遠(yuǎn)都會(huì)挑一扇有山羊的門。如果參賽者挑了一扇有山羊的門,主持人必須挑另一扇有山羊的門;
·如果參賽者挑了一扇有汽車的門,主持人隨機(jī)在另外兩扇門中挑一扇有山羊的門;
·參賽者會(huì)被問(wèn)是否保持他的原來(lái)選擇,還是轉(zhuǎn)而選擇剩下的那一道門;
轉(zhuǎn)換選擇可以增加參賽者的機(jī)會(huì)嗎?
問(wèn)題的答案是可以:當(dāng)參賽者轉(zhuǎn)向另一扇門而不是繼續(xù)維持原先的選擇時(shí),贏得汽車的機(jī)會(huì)將會(huì)加倍。
有三種可能的情況,全部都有相等的可能性(1/3):
·參賽者挑山羊一號(hào),主持人挑山羊二號(hào)。轉(zhuǎn)換將贏得汽車;
·參賽者挑山羊二號(hào),主持人挑山羊一號(hào)。轉(zhuǎn)換將贏得汽車;
·參賽者挑汽車,主持人挑兩頭山羊的任何一頭。轉(zhuǎn)換將失?。?/p>
在頭兩種情況,參賽者可以透過(guò)轉(zhuǎn)換選擇而贏得汽車。第三種情況是唯一一種參賽者透過(guò)保持原來(lái)選擇而贏的情況。因?yàn)槿N情況中有兩種是透過(guò)轉(zhuǎn)換選擇而贏的,所以透過(guò)轉(zhuǎn)換選擇而贏的概率是2/3。在接下來(lái)的這個(gè)示例中,我們將模仿蒙提霍爾悖論編寫如圖1所示的頁(yè)面來(lái)驗(yàn)證其理論。
圖1 驗(yàn)證蒙特霍爾悖論
設(shè)計(jì)該頁(yè)面可以選用很多開發(fā)工具,DOM無(wú)疑是一個(gè)好的選擇。文檔對(duì)象模型(Document Object Model,簡(jiǎn)稱DOM)[1],是W3C組織推薦的處理可擴(kuò)展置標(biāo)語(yǔ)言的標(biāo)準(zhǔn)編程接口。DOM是W3C的標(biāo)準(zhǔn)[2],W3C文檔對(duì)象模型(DOM)是中立于平臺(tái)和語(yǔ)言的接口,它允許程序和腳本動(dòng)態(tài)地訪問(wèn)和更新文檔的內(nèi)容、結(jié)構(gòu)和樣式,提供了標(biāo)準(zhǔn)的HTML和XML對(duì)象集,并有一個(gè)標(biāo)準(zhǔn)的接口來(lái)訪問(wèn)并操作它們。
換句話說(shuō),這是表示和處理一個(gè)HTML或XML文檔的常用方法。有一點(diǎn)DOM很重要[3],DOM的設(shè)計(jì)是以對(duì)象管理組織(OMG)的規(guī)約為基礎(chǔ)的,因此可以用于任何編程語(yǔ)言。DOM技術(shù)使得用戶頁(yè)面可以動(dòng)態(tài)地變化[4],如可以動(dòng)態(tài)地顯示或隱藏一個(gè)元素,改變它們的屬性,增加一個(gè)元素等,DOM技術(shù)使得頁(yè)面的交互性大大地增強(qiáng)。DOM的優(yōu)勢(shì)主要表現(xiàn)在:易用性強(qiáng),使用DOM時(shí),將把所有的XML文檔信息都存于內(nèi)存中,并且遍歷簡(jiǎn)單,支持XPath,增強(qiáng)了易用性。
2.1頁(yè)面功能描述
頁(yè)面中,放置三張撲克牌,編號(hào)依次為0~2號(hào),使用紅桃A模擬汽車,使用梅花A模擬山羊。三張牌面中只有一張是紅桃A(紅色),另外兩張為梅花A(黑色),牌面圖案如圖2所示,參賽者要在三張牌中選中其中的紅桃A,即視為贏得比賽。
圖2 兩種牌面圖案
參賽者的游戲操作順序?yàn)槭紫葐螕羝渲械囊粡埮?我們?cè)谶x中的牌上加上選中標(biāo)志,隨后程序會(huì)翻開一張黑色A,頁(yè)面如圖3所示。
圖3 第一次選擇后的頁(yè)面
此時(shí),參賽者有兩個(gè)選擇,維持原來(lái)的選取不變或者改為選取另外的一張牌,第二次選取后會(huì)亮出全部三張牌的牌面,并提示參賽者是否選取了正確的紅桃A。頁(yè)面下方放置的表格會(huì)統(tǒng)計(jì)參賽者在是否改變選擇的情況下猜對(duì)的次數(shù),并計(jì)算猜對(duì)的概率,以此驗(yàn)證蒙特霍爾悖論是否成立。
2.2頁(yè)面布局劃分
按照?qǐng)D1所示放置頁(yè)面中的元素,頁(yè)面大致分為四個(gè)部分,依次放置的為輔助信息、游戲操作部分、統(tǒng)計(jì)信息和背面圖案選擇按鈕。
2.2.1游戲操作部分
游戲操作部分主要用來(lái)放置三張撲克牌及其對(duì)應(yīng)的序號(hào),并提示參賽者應(yīng)該進(jìn)行的操作,將撲克牌及其序號(hào)使用表格元素放置,在其上方放置如下span元素提示參賽者游戲的內(nèi)容為“下面3張撲克中,僅有一張是紅桃A,猜猜是哪張?”。
〈span〉下面3張撲克中,僅有一張是紅桃A,猜猜是哪張?〈/span〉〈span id="cheat"〉〈/span〉
讀者會(huì)發(fā)現(xiàn),在提示信息的后面還緊跟著另一個(gè)id="cheat"的span元素,這是用來(lái)放置作弊信息的,即在隨機(jī)放置三張撲克牌的時(shí)候,頁(yè)面本身是知道紅桃A的放置位置的,這里顯示紅桃A的正確位置,由于是作弊信息,不允許參賽者看到,所以在style元素中將字體顏色設(shè)置為白色顯示。
讀者可以更改其字體顏色,將其顯示在頁(yè)面上。表格劃分為2×3的,第一行放置三張撲克牌的背面圖片,第二行顯示對(duì)應(yīng)的序號(hào)。
從圖2可以看出,撲克牌背面圖片可以有紅色和藍(lán)色兩種選擇,在頁(yè)面加載時(shí)根據(jù)單選按鈕的選中情況在函數(shù)reset()中放置撲克牌背面圖片,所以單元格中并沒有靜態(tài)放置圖片。單元格的onclick事件會(huì)觸發(fā)函數(shù)fn(value),參數(shù)value就是當(dāng)前撲克牌的序號(hào),該函數(shù)用來(lái)實(shí)現(xiàn)游戲的規(guī)則。緊挨著撲克牌的下方為id="info"的div元素,提示參賽者在游戲過(guò)程中是否改變選擇,并在游戲結(jié)束后顯示游戲結(jié)果。
2.2.2統(tǒng)計(jì)信息部分
統(tǒng)計(jì)信息部分用來(lái)統(tǒng)計(jì)參賽者是否改變了最初選擇、猜對(duì)的次數(shù)和猜對(duì)的概率,由于這里表格中的數(shù)據(jù)是在游戲過(guò)程中根據(jù)游戲結(jié)果統(tǒng)計(jì)得出的,所以頁(yè)面加載時(shí)只放置進(jìn)行了表格的劃分,相應(yīng)的數(shù)據(jù)初始化為0和n/a。[5]
2.2.3背面圖案選擇按鈕
頁(yè)面的最后一部分是選擇撲克牌背面圖案的單選按鈕,為了增加頁(yè)面的趣味性,可以做紅色和藍(lán)色兩種選擇,其onclick事件代碼中給全局變量back賦值,并調(diào)用reset()函數(shù)根據(jù)back的值將撲克牌背面初始化為相應(yīng)的顏色??蛇x擇的背面圖案如圖4所示,默認(rèn)的選擇為圖例1中的藍(lán)色。
圖4 撲克牌背面圖案
頁(yè)面數(shù)據(jù)處理的操作代碼根據(jù)需要分別包含在兩個(gè)函數(shù)中,頁(yè)面加載時(shí)調(diào)用reset()函數(shù)進(jìn)行元素布局的初始化,游戲過(guò)程中點(diǎn)擊選中的撲克牌時(shí)調(diào)用fn()函數(shù)進(jìn)行游戲過(guò)程處理和統(tǒng)計(jì)數(shù)據(jù)的給出。代碼中需要的全局變量如下所示。
SelFlag表示當(dāng)前為第幾次選擇,1表示第一次選擇,2表示第二次選擇,其余表示一輪游戲結(jié)束;firstSel用來(lái)記錄第一次選擇的值,使用第二次選擇的值和其進(jìn)行比較,以判斷第二次是否改變了選擇;str是將來(lái)要顯示在id="info"的div元素中的信息,在游戲的不同階段給出不同的信息;right中放置的是正確選擇的序號(hào),該值不只在初始化時(shí)可以顯示為作弊信息,也是游戲中用于判斷選擇正確與否的依據(jù);errSel表示進(jìn)行第一次選取后,頁(yè)面自動(dòng)給出的錯(cuò)誤選擇,0~2分別表示已知的錯(cuò)誤為0~2號(hào)撲克,-1表示尚未給出(即未進(jìn)行第一次選擇);back值初值為“B”,表示當(dāng)前撲克牌背面選用的哪種圖案,“B”為圖4中圖例1所示的藍(lán)色,“R”為圖4中圖例2所示的紅色。
3.1元素布局初始化
頁(yè)面初始化時(shí),首先確定三張撲克牌牌面的放置位置,即將紅桃A放置在一個(gè)隨機(jī)位置,另外的兩個(gè)位置放置黑色牌面,由于一共有三個(gè)位置,使用隨機(jī)函數(shù)Math.random()*3選取三個(gè)位置中的一個(gè)放置紅色牌面,并將其位置使用全局變量right記錄下來(lái)以備后用。此時(shí),頁(yè)面上將要顯示的都是撲克牌的背面圖案,并不需要顯示紅桃A的牌面圖案,只需要記錄其位置即可。
right=Math.floor(Math.random()*3);//隨機(jī)放置紅桃A,
將獲取的正確選擇right賦給id="cheat"的span元素,用于作弊顯示。
cheat.innerText=right;//顯示正確選擇(作弊),
id="info"的div元素是在游戲過(guò)程中提示參賽者接下來(lái)應(yīng)該進(jìn)行的操作以及游戲結(jié)束后提示結(jié)果信息,在游戲開始之前,該元素中沒有任何提示信息,將其清空為""。
info.innerHTML="";//清空提示信息。
給相關(guān)的標(biāo)志位賦值,由于接下來(lái)的操作為點(diǎn)擊撲克牌進(jìn)行第一次選擇,所以將記錄第幾次選擇的全局變量SelFlag賦值為1用于第一次選擇的判斷。在沒有進(jìn)行第一次選擇撲克牌之前,是不會(huì)給出已知錯(cuò)誤的撲克牌的,即游戲開始之前,errSel的值為-1,表示尚未給出已知錯(cuò)誤的撲克牌。
SelFlag=1;//選擇標(biāo)志:1表示第一次選擇,2表示第二次選擇,其余表示一輪游戲結(jié)束,
errSel=-1;//自動(dòng)給出的錯(cuò)誤選擇:0~2分別表示已知的錯(cuò)誤為0~2號(hào)撲克,-1表示尚未給出(即未進(jìn)行第一次選擇),
最后,將撲克牌背面圖片放置在id="imgi"的img元素中,撲克牌的牌面圖案不一樣,背面圖案初始時(shí)卻是相同的,初始時(shí)img元素放置的是相同的背面圖案,當(dāng)點(diǎn)擊撲克牌進(jìn)行選擇后,才會(huì)顯示牌面圖案和不一樣的背面圖案。使用循環(huán)依次放置三張撲克牌的背面圖案,循環(huán)變量i在這里也用于確定img元素的id值,即img元素的id值為"img"和i組合而成,我們調(diào)用的ECMAScript的eval()方法來(lái)完成這一功能,eval(string)函數(shù)可計(jì)算某個(gè)字符串,執(zhí)行其中的ECMAScript代碼,并返回通過(guò)解釋參數(shù)string得到的值。eval()的功能非常強(qiáng)大,將"img"+i作為其參數(shù),可以返回img元素正確的id值。
給其src屬性賦值為相應(yīng)的圖片,圖片有兩種(顏 色 不 同),名 稱 分 別 為“m_backB.png”和“m_backR.png”,其名稱中不一樣的部分恰好是存放在全局變量back中的值,所以放置的圖片的完整名稱為"m_back"+back+".png"。當(dāng)圖片顯示為撲克牌背面圖案時(shí),鼠標(biāo)在圖片上的形狀為手型,當(dāng)圖片顯示為撲克牌牌面圖案時(shí),鼠標(biāo)在圖片上的形狀為缺省形狀,即指針形狀。游戲開始之前,所有的圖片都顯示為背面圖案,此時(shí),鼠標(biāo)指針為手型。
for(var i=0;i〈=2;i++){//初始化或恢復(fù)圖片為未知狀態(tài),鼠標(biāo)指針為手型,
函數(shù)reset()完整的代碼如下所示。SelFlag=1;//選擇標(biāo)志:1表示第一次選擇,2表示第二次選擇,其余表示一輪游戲結(jié)束,
errSel=-1;//自動(dòng)給出的錯(cuò)誤選擇:0~2分別表示已知的錯(cuò)誤為0~2號(hào)撲克,-1表示尚未給出(即未進(jìn)行第一次選擇),
3.2游戲過(guò)程處理和統(tǒng)計(jì)數(shù)據(jù)的給出
參賽者在游戲過(guò)程中要做的就是選取不同位置的撲克牌,點(diǎn)擊撲克牌會(huì)觸發(fā)img對(duì)象的onclick事件,調(diào)用fn(value)函數(shù),參數(shù)value表示的是被點(diǎn)擊的撲克牌的序號(hào)。將參賽者點(diǎn)擊撲克牌的操作分為三種情況加以處理,第一種為游戲沒有結(jié)束,而參賽者點(diǎn)擊了已經(jīng)顯示了牌面的撲克牌,即當(dāng)前觸發(fā)事件的序號(hào)value等于已經(jīng)給出的錯(cuò)誤序號(hào)err-Sel,或者是游戲已經(jīng)結(jié)束了,所有的撲克牌都已經(jīng)顯示了牌面,此時(shí),參賽者又點(diǎn)擊了撲克牌,即參賽者選擇的次數(shù)SelFlag已經(jīng)大于2次,這種情況我們會(huì)認(rèn)為是參賽者進(jìn)行了誤操作,不做任何處理,直接退出函數(shù)即可。
if(value==errSel||SelFlag〉 2)return;//點(diǎn)擊了已經(jīng)給出的錯(cuò)誤選擇或一輪游戲已經(jīng)結(jié)束;
第二種情況為,參賽者第一次選擇了牌面未知的撲克牌,此時(shí),函數(shù)應(yīng)該首先將該撲克牌背面圖案變?yōu)橐堰x定狀態(tài)的背面圖案,選中狀態(tài)的撲克牌背面圖案如圖5所示。
eval("img"+value).src="m_backSel"+back+".png";//顯示已選擇的撲克背面(包含鎖)。
圖5 選中狀態(tài)的撲克牌背面圖案
根據(jù)已選的序號(hào)給出一個(gè)已知錯(cuò)誤的序號(hào),如果已選中的序號(hào)為恰好為紅桃A的序號(hào),即正確的序號(hào),那么已知錯(cuò)誤的序號(hào)就在另外兩個(gè)中隨機(jī)選取一個(gè),選取的方法為給原有的序號(hào)加上1或者2之后再模3;如果選中的序號(hào)為一個(gè)錯(cuò)誤的序號(hào)(黑色牌面),那么將另外一個(gè)錯(cuò)誤的序號(hào)給出,三張牌的序號(hào)之和為0+1+2等于3,要給出的已知錯(cuò)誤序號(hào)為3減去正確的序號(hào),再減去選中的錯(cuò)誤的序號(hào),將獲取的要給出的錯(cuò)誤序號(hào)賦給errSel。
給出已知錯(cuò)誤序號(hào)之后,要將相應(yīng)位置上的撲克牌顯示為黑色牌面,并將該圖片上的鼠標(biāo)指針設(shè)置為默認(rèn)形狀。
最后,設(shè)置相應(yīng)的標(biāo)志和提示信息,將第一次選取的序號(hào)保留下來(lái)以便和第二次選取的序號(hào)做對(duì)比判斷是否改變了選擇,選取次數(shù)加1,設(shè)置提示信息,提示參賽者當(dāng)次選取的序號(hào)、已知錯(cuò)誤牌面的序號(hào)和是否要改變選擇。
firstSel=value;//記錄第一次選擇的值,以判斷第二次是否改變了選擇,
info.innerHTML="你選擇了"+value+"號(hào)撲克,已知"+errSel+"號(hào)撲克不是紅桃A,是否改變最初的選擇?"
SelFlag++;//第一次選擇完成,修改標(biāo)志,
第一次選擇后頁(yè)面如圖3所示(以藍(lán)色背面為例)。
第三種情況為參賽者進(jìn)行了第二次選擇,首先要做的工作是,不管選擇結(jié)果是否正確,都會(huì)全部顯示三張牌的牌面,使用循環(huán)依次判斷序號(hào)i是否等于right,正確的序號(hào)顯示的是紅桃A的牌面(m_heartA.png),錯(cuò)誤的序號(hào)顯示的是梅花A的牌面(m_clubA.png),并將三張牌的鼠標(biāo)指針都恢復(fù)為默認(rèn)狀態(tài),這里仍然使用eval()方法獲取img元素的id值。
接下來(lái)判斷第二次是否改變了選擇,使用不同的情況下的統(tǒng)計(jì)數(shù)據(jù)來(lái)填寫頁(yè)面最下方的表格,放置堅(jiān)持選擇時(shí)獲取的數(shù)據(jù)的單元格的id值為"l0"~"l2",放置改變選擇時(shí)獲取的數(shù)據(jù)的單元格的id值為“h0”~“h2”,為了不重復(fù)進(jìn)行相同的工作,使用變量t來(lái)放置單元格id值的第一個(gè)字符,再使用方法eval(t+x)返回完整的id值。第一個(gè)單元格“t0”放置每種情況下游戲的總次數(shù),計(jì)算方法為將上一次單元格中的數(shù)字加1。
如果參賽者猜對(duì)了正確的序號(hào),將“t1”單元格中猜對(duì)的數(shù)字加1,并且在提示信息中顯示“很幸運(yùn),你猜對(duì)了!”,為了增加游戲的趣味性,如果參賽者沒有改變選擇,提示信息中增加“矢志不渝!”,如果參賽者改變了選擇,提示信息中增加“通權(quán)達(dá)變!”。如果參賽者選擇了錯(cuò)誤的序號(hào),提示信息為“很遺憾,你猜錯(cuò)了!”,判斷是否改變了選擇在提示信息中增加的內(nèi)容分別為“執(zhí)迷不悟!”和“朝秦暮楚!”。由于〈div id="info"〉元素中在后面的代碼還會(huì)增加其他信息,這里使用的變量str暫存上述信息。
str="很遺憾,你猜錯(cuò)了!"+(firstSel==value?"執(zhí)迷不悟!":"朝秦暮楚!");
最后,根據(jù)猜對(duì)的次數(shù)統(tǒng)計(jì)猜對(duì)概率,將其寫入“t2”單元格中。使用猜對(duì)次數(shù)/游戲次數(shù),即為猜對(duì)概率,我們使用百分比的形式顯示概率,即需要將除法結(jié)果擴(kuò)大100倍,由于百分比結(jié)果要保留2位小數(shù),所以將除法結(jié)果擴(kuò)大10000倍后取整,再除以100就是最后猜對(duì)的概率。
eval(t+2).innerText=Math.round(parseInt(eval(t+1).innerText)/parseInt(eval(t+0).innerText)*
10000)/100+"%";//統(tǒng)計(jì)猜對(duì)概率(保留2位小數(shù))。
在〈div id="info"〉元素中顯示變量str中的內(nèi)容,并且添加按鈕元素,點(diǎn)擊進(jìn)行下一次游戲,按鈕value值為“再猜一次”,點(diǎn)擊按鈕調(diào)用函數(shù)reset(),初始化頁(yè)面開始新游戲。設(shè)置標(biāo)志變量SelFlag++,表示第二次選擇完成。
頁(yè)面加載后,請(qǐng)讀者耐心進(jìn)行游戲,會(huì)發(fā)現(xiàn),進(jìn)行游戲的次數(shù)足夠多時(shí),堅(jiān)持選擇時(shí)猜對(duì)的概率為33.33%(1/3),改變選擇時(shí)猜對(duì)的概率為66.66%(2/3),驗(yàn)證了蒙特霍爾悖論。
[1]劉德山,楊彬彬.HTML+CSS+JavaScript網(wǎng)站開發(fā)實(shí)用技術(shù)[M].北京:人民郵電出版社,2014.
[2]莫卓穎.基于語(yǔ)義DOM的WEB信息抽取[D].桂林:廣西師范大學(xué),2012.
[3]馬瑞民,錢浩.基于時(shí)間頻率加權(quán)DOM的Web信息抽取方法[J].長(zhǎng)江大學(xué)學(xué)報(bào)(自然科學(xué)版),2011(1):59-61.
[4]李大成,陳莘萌.Java與XML的結(jié)合應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2002(2):5-9.
[5]廉捷,劉云.網(wǎng)絡(luò)輿情中的信息預(yù)處理與自動(dòng)摘要算法[J].北京交通大學(xué)學(xué)報(bào),2010(5):94-99.
Design and Implementation of Validation Monty Hall Problem Based on DOM
GAO Yun
(School of Mathematics and Computer Science,Shanxi Datong University,Datong Shanxi,037009)
Since the appearence of Monty Hall problem,it has been studied by many game enthusiasts.Although it was finally verified as true,most explanations are esoteric mathematical formula and inference.In order to enable most readers to understand the establishment of the paradox,this paper tries to design intuitive web page in which readers can operate in person and get the probability by statistical experimental data.A variety of development tools can be used for the design.Among them DOM is a good choice,which allows access to programs and scripts and update of content,structure and style of the document,provides a standard set of HTML,XML objects,and a standard interface for accessing and manipulating them,making page design easy and convenient.
DOM;ECMAScript;Monty Hall problem;algorithm
TP393.092.2
A
〔責(zé)任編輯 高?!?/p>
1674-0874(2017)01-0001-06
2016-11-08
高云(1976-),女,山西大同人,碩士,講師,研究方向:計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用。