javascript - 如何在单人纸牌游戏等扑克中做出最佳决策?
问题描述
我需要一些帮助来完成我的应用程序,这有助于在纸牌游戏中做出最佳决策。
小游戏说明:
- 单人游戏 - 1 名玩家一副牌仅供自己使用
- 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+动作
并以某种方式将这三个加在一起以获得最佳/接近最佳解决方案?
我是否应该在我的计算中加上潜在的损失以及如何形成它们?如果我采用弱组合并且在游戏后期我无法获得更高的组合,因为它们是互斥的。
解决方案
推荐阅读
- java - Java BufferedReader 冻结
- javascript - WebSocket 打开时间
- php - 如何从 UploadFile 类创建非映射派生 CV 类
- keras - 图像识别的类别不平衡
- spring-boot - 如何使用@ControllerAdvice 捕获 Spring boot 2 webflux 中的所有异常
- jquery - 如何在部分加载时绑定事件 Shopify
- java - Android - 有没有办法为服务使用消息处理程序并且仍然能够从绑定的活动中调用它的方法?
- flutter - 动画容器:RenderFlex 底部溢出 154 像素
- php - 如何通过 wordpress 页面上的插件呈现表单?
- analytics - couchbase 分析查询中是否允许 SELECT 中的双重计数