我正在写一张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)。您可能想要放弃提供最高预期值的卡(如果它高于您当前手的数值)。 –