![](/img/trans.png)
[英]Design an algorithm to calculate probability of team winning depending on variables
[英]Implementation of a simple algorithm (to calculate probability)
我被要求(作為家庭作業的一部分)設計一個執行以下操作的Java程序:
基本上有3張牌:
現在,如果我隨機拿一張卡片放在桌子上。 朝上的一面是黑色的。 對方也是黑色的概率是多少?
使用Java實現程序並嘗試發現概率,程序應該多次模擬卡片技巧並且應該輸出卡片另一側是黑色的概率(它通過計算另一側的數量來做到這一點)也是黑色)。
但是我被告知我的代碼是錯誤的(算法明智的)......顯然答案不應該是0.50。 我試圖理解算法時犯了錯誤嗎?
有人能指出我正確的方向嗎? (我不是要求你為我提供一個完全正常的實現,只是關於算法應該如何工作)。
這篇文章非常有用: https : //blog.codinghorror.com/finishing-the-game/
這可能對算法沒有幫助,但這就是我自己得出答案的方法:
當您繪制隨機卡並將其放在桌面上時,可能會發生六種可能發生的事情:
在這六個事件中,6個中有3個導致桌面上出現黑邊卡。
在這3個事件中,恰好其中兩個是卡黑的另一面。
因此,問題的答案是“對方也是黑色的概率是多少?” 是2/3 。
您的算法失敗是因為您只將black_black
卡計為單個事件,而實際上是兩個。
您的算法缺少關鍵步驟:將卡放在桌面上。 如果您繪制黑紅卡,則無法保證在您放下黑色時顯示黑色邊。 增加一個額外的步驟,以模擬隨機選擇每個卡片的側面中的一個,然后確定如何許多情況下顯示黑色面,然后多少的那些情況下具有黑黑卡展示。
卡片有六個方面,我們假設它們具有相同的概率。 有三個黑色面孔,另外兩個黑色面孔。 我們丟棄所有紅臉最重的情況,所以我們只關注三個黑色面,概率相等。
因此,另一面是黑色的概率實際上是2/3。
我認為你需要考慮紅黑卡的兩種可能性:紅色面朝上和黑面朝上。 這些概率的總和將是完全繪制紅黑卡的概率。
檢查你已經正確實施的問題可能會有所幫助:假設你已經隨機選擇了至少一面是黑色的卡片,那么卡片在一側是黑色而在另一側是紅色的幾率是多少?
你沒有正確實現的問題是:假設你正在看這張臉上是黑色的卡片,那么另一張臉上的紅色是多少?
請注意,有兩張黑卡,但有三張黑臉。
雙面紅色的牌基本上是(原諒雙關語)一個紅色的鯡魚 - 無論如何處理,它都會變紅,我們不再需要關心它了。
只剩下紅/黑和黑/黑卡。 再次,如果紅色/黑色紅色朝上,我們需要不再付費。 剩下的可能性是:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.