Javascript 如何在类似扑克的单人纸牌游戏中做出最佳决策?

Javascript 如何在类似扑克的单人纸牌游戏中做出最佳决策?,javascript,probability,combinatorics,playing-cards,Javascript,Probability,Combinatorics,Playing Cards,我需要一些帮助来完成我的应用程序,这有助于在纸牌游戏中做出最佳决策 游戏简介: 单人游戏-一人一副,仅限自己玩 24个卡片组,卡片值从1到8,每个卡有3种颜色(红色、黄色、蓝色) 在游戏开始时,牌组被随机洗牌,然后玩家将5张牌(牌组左19张)拉到手上,从这一点开始,他可以: 收起一张牌(这张牌不再在游戏中)并从洗牌牌组的顶部取出一张牌。 或 可以收起3张卡,形成一个可能的加分组合,然后将3张卡拿到手上 当牌组中的牌结束并且玩家不再有可能的得分组合时,游戏结束 游戏的目标是获得尽可能多的分

我需要一些帮助来完成我的应用程序,这有助于在纸牌游戏中做出最佳决策

游戏简介:

  • 单人游戏-一人一副,仅限自己玩
  • 24个卡片组,卡片值从1到8,每个卡有3种颜色(红色、黄色、蓝色)
在游戏开始时,牌组被随机洗牌,然后玩家将5张牌(牌组左19张)拉到手上,从这一点开始,他可以:

  • 收起一张牌(这张牌不再在游戏中)并从洗牌牌组的顶部取出一张牌。 或
  • 可以收起3张卡,形成一个可能的加分组合,然后将3张卡拿到手上
当牌组中的牌结束并且玩家不再有可能的得分组合时,游戏结束

游戏的目标是获得尽可能多的分数

变体列表:(称为以后的组合) 一类三个(共8个):

  • 111-20分
  • 222-30分
  • 333-40分
  • 444-50分
  • 555-60分
  • 666-70分
  • 777-80分
  • 888-90分
笔直(卡片可以有任何颜色,总共144种可能):

  • 123-10分
  • 234-20分
  • 345-30分
  • 456-40分
  • 567-50分
  • 678-60分
直插式(卡必须为同一颜色,RRR/YYY/BBB,总共18张):

  • 123-50分
  • 234-60分
  • 345-70分
  • 456-80分
  • 567-90分
  • 678-100分
我在JS中创建了整个游戏逻辑,但我不得不做一些算法来帮助我:

  • 把哪张牌从手上拿开以获得最大的组合机会 或:
  • 把哪张牌从手上拿开?-丢失尽可能少的组合
我真的不知道该采取哪种方法。或者我应该把它们结合起来,让公式来决定?目前,我正在阅读有关风险回报率的文章,也许这就是解决问题的方法

我必须记住,随着每张牌越来越少,我有越来越少的可能组合(从170开始),但有时在游戏的后期,牺牲更便宜的组合来获得更高的分数是值得的

我过去的思维方式:

  • 当把每张牌从手上拿开时,计算每种可能的剩余组合的概率(即5次),并决定哪一种组合最差
  • 计算手上5张牌中每2张牌子集的每个可能剩余组合的概率(因此10次寻找1张牌来填充组合),并确定手上哪张牌最差
  • 计算牌组中剩余的每种可能组合的概率(不包括手中的牌)。3+提前移动
  • 然后把这三个加在一起,得到最优/接近最优的解决方案


    我是否应该在计算中加入潜在损失,以及如何形成这些损失?如果我采用弱组合,在游戏后期,我无法获得更高的组合,因为它们是相互排斥的。

    我建议您尝试一些东西,看看它是如何工作的。因为这不是一个关于一段坏代码的问题,而是如何设计一段程序逻辑的问题,最好在另一个stack exchange站点提问;也许数学网站上的人可以帮助计算数学公式,或者扑克网站上的人可以帮助计算概率?我做了第一个和第二个。从过去的思维方式部分。根据我的观察,他们经常强迫单一的组合花费他们很多的分数。在我看来,平均而言,我比这两个剧本得分更多,仅仅是因为它们没有考虑牺牲某些组合。我还计算了牌组中剩余的每一个可能的组合,没有计算手上的牌,但不知道如何组合结果。