我正在寫一張AI來玩5張牌撲克,在那裏你可以放棄手中的一張牌並隨機換成另一張牌如果你願意的話,處理一件。我的AI可以珍惜每一支可能的牌手as shown in the answer to my previous question。簡而言之,它爲每隻可能的牌賦予一個獨特的值,其中較高的值與一隻更好的/獲勝的牌相關。編程一個概率,讓AI決定何時丟棄一張卡或不在5張牌撲克
我的任務是寫一個函數int getDiscardProbability(int cardNumber)
,它給我的AI一個0-100的數字,關於是否應該丟棄這張卡(0 = defintely不丟棄,100 =肯定丟棄)。
我想到的方法是通過將卡片換成卡片中的每張卡片(假設現在還有47張卡片),然後將它們的每個值與當前手相比較來計算每個可能的手,計算有多少個更好,所以(count/47) * 100
是我的概率。
但是,這種解決方案只是尋找任何更好的手,而不是區分單手是多麼好的。例如,如果我的AI有手牌23457
,它可以丟棄7個K,產生一個稍微好一點的牌(更好的牌),或者它可以交換一個A或一個6,完成直線 - a比高級國王好得多的手(更高的價值)。因此,當我的AI正在計算這個概率時,當它看到通過獲得K可以改善手部比當它看到通過獲得一個手部可以改善手部時會增加的概率時,它會增加相同的量。 A或6.因此,當計算這個概率時,我需要考慮我手上和每個可能手中的價值差異。什麼是實現這一目標的好方法?
聽起來像你應該不關心卡片本身,而是完整的手牌,所以你需要首先評估可能的4張牌手牌(考慮所有5張不同的4張牌手牌)以及獲得每張牌所需牌面的機率。然後根據該「機會」得分評估當前得分。 – LordNeo
在「評估可能的4張牌手牌(考慮所有5張不同的4張牌手牌)」時,你「失去了可能的4張牌手牌」,是否意味着牌組中所有可能的4張牌組合? 「5個不同的4張牌手」來自哪裏? – KOB
查看[期望值](https://en.wikipedia.org/wiki/Expected_value)。您可能想要放棄提供最高預期值的卡(如果它高於您當前手的數值)。 –