簡體   English   中英

實現一個簡單的算法(計算概率)

[英]Implementation of a simple algorithm (to calculate probability)

我被要求(作為家庭作業的一部分)設計一個執行以下操作的Java程序:


基本上有3張牌:

  • 兩側都是黑色
  • 兩側都是紅色
  • 一邊是黑色,另一邊是紅色

現在,如果我隨機拿一張卡片放在桌子上。 朝上的一面是黑色的。 對方也是黑色的概率是多少?

使用Java實現程序並嘗試發現概率,程序應該多次模擬卡片技巧並且應該輸出卡片另一側是黑色的概率(它通過計算另一側的數量來做到這一點)也是黑色)。


但是我被告知我的代碼是錯誤的(算法明智的)......顯然答案不應該是0.50。 我試圖理解算法時犯了錯誤嗎?

有人能指出我正確的方向嗎? (我不是要求你為我提供一個完全正常的實現,只是關於算法應該如何工作)。


這篇文章非常有用: https//blog.codinghorror.com/finishing-the-game/

這可能對算法沒有幫助,但這就是我自己得出答案的方法:

當您繪制隨機卡並將其放在桌面上時,可能會發生六種可能發生的事情:

  1. 您選擇R / R卡並將其面朝上放置。
  2. 您選擇R / R卡並將另一面朝上放置。
  3. 您選擇B / R卡並將其黑色朝上放置。
  4. 您選擇B / R卡並將其紅色朝上放置。
  5. 您選擇B / B卡並將其黑色朝上放置。
  6. 您選擇B / B卡並將另一個黑面朝上放置。

在這六個事件中,6個中有3個導致桌面上出現黑邊卡。

在這3個事件中,恰好其中兩個是卡黑的另一面。

因此,問題的答案是“對方也是黑色的概率是多少?” 2/3

您的算法失敗是因為您只將black_black卡計為單個事件,而實際上是兩個。

您的算法缺少關鍵步驟:將卡放在桌面上。 如果您繪制黑紅卡,則無法保證在您放下黑色時顯示黑色邊。 增加一個額外的步驟,以模擬隨機選擇每個卡片的側面中的一個,然后確定如何許多情況下顯示黑色面,然后多少的那些情況下具有黑黑卡展示。

卡片有六個方面,我們假設它們具有相同的概率。 有三個黑色面孔,另外兩個黑色面孔。 我們丟棄所有紅臉最重的情況,所以我們只關注三個黑色面,概率相等。

因此,另一面是黑色的概率實際上是2/3。

我認為你需要考慮紅黑卡的兩種可能性:紅色面朝上和黑面朝上。 這些概率的總和將是完全繪制紅黑卡的概率。

檢查你已經正確實施的問題可能會有所幫助:假設你已經隨機選擇了至少一面是黑色的卡片,那么卡片在一側是黑色而在另一側是紅色的幾率是多少?

你沒有正確實現的問題是:假設你正在看這張臉上是黑色的卡片,那么另一張臉上的紅色是多少?

請注意,有兩張黑卡,但有三張黑臉。

雙面紅色的牌基本上是(原諒雙關語)一個紅色的鯡魚 - 無論如何處理,它都會變紅,我們不再需要關心它了。

只剩下紅/黑和黑/黑卡。 再次,如果紅色/黑色紅色朝上,我們需要不再付費。 剩下的可能性是:

  1. 紅色/黑色,黑色
  2. 黑色/黑色,第一面朝上
  3. 黑色/黑色,第二面朝上
由於這三個中的兩個有另一側黑色,概率是三分之二。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM