21点扑克游戏的出牌策略的研究

21点是一个非常流行的扑克游戏,规则很简单,计算手中的牌,如果超过21点则输,不到21点则比谁的牌大。其中JQK都当成10点计算,A可以计算为1点或11点。

在澳门的娱乐场里面,21点的规则如下,庄家先给每位玩家发一张牌以及给自己发一张牌,然后庄家继续给玩家发一张牌。这时玩家手里有两张牌,庄家只有一张牌。玩家需要根据自己的牌以及庄家的牌来作出决策,是继续要牌,还是停牌,如果两张牌一致还可以选择分牌。庄家根据玩家的决策来进行相应的操作,并且计算点数,如果玩家的牌超过21点则算玩家负。等所有玩家的操作都完成后,庄家再继续给自己派牌,如果庄家的牌不包含A并且点数不超过16点(也称之为硬16点),庄家需要继续补牌,如果含A并且点数不超过17点(软17点),庄家也需要补牌。最后比较庄家和玩家的牌的大小来决定胜负。除此之外还有一些特殊的规则,例如玩家在刚开始拿到2张牌的时候,可以选择加倍,这是只能再拿一张牌,如果赢了则拿到双倍的筹码。当玩家刚开始拿到的2张牌是A和10, J, Q, K的任何一张时,叫做Black Jack,如果庄家的牌不是A,10,J,Q,K时,需要立即赔付玩家1.5倍的筹码,如果庄家的牌是A,10,J,Q,K,玩家可以选择先赢1倍的筹码并离场,或者等待庄家开牌之后,如果庄家不是Black Jack则赢1.5倍的筹码,或者庄家是Black Jack则打平。另外当庄家第一张牌是除A之外的其他牌时,玩家可以选择投降拿回一半的筹码。

网上已经有很多关于21点的基本出牌策略的介绍,这些出牌策略应该都是基于美国一位大学教授用概率的方法研究出来的,这种研究方法需要对概率学有很深的了解。另外在人工智能里面,基于强化学习来模拟21点游戏进行研究也是一个很基础的话题。在这里我想用另一种方法来研究21点的出牌策略,即用蒙特卡洛的方法来模拟很多局21点游戏,通过计算每种结果的取值来得出一个出牌策略,根据大数定律,当模拟的局数足够多时,得出的结果就会很接近真实的概率了。

首先我们先建立一个庄家的对象,负责模拟庄家的操作,代码如下:

然后我们建立一个玩家的对象,代码如下:

要牌/停牌策略的研究

接下来我们就可以通过模拟玩21点来研究策略了。首先研究的是当玩家没有拿到2张一样的牌的时候(即没有分牌这种可能性),玩家需要采用哪种策略最优(要牌,加倍,停牌)。为了得到最优策略,我们可以通过迭代的方法来进行模拟。首先设定当玩家两张手牌的和为21点的时候,无论庄家手牌是多少点我们都需要采取停牌的策略(这是显而易见的),那么当玩家手牌为20点时,模拟分别要牌,加倍或停牌这三种情况(因为玩家在20点时只要加倍或要牌,必然会到达21点或以上,这样我们就知道玩家的下一个采取的策略),看哪种策略获取的收益最高。当玩家手牌为20点时的策略全部确定下来之后,继续探索手牌为19点时的策略,如此循环下去,最终我们就能得到玩家手牌从4点到19点的所有最优策略。代码如下:

来源:gzroy

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年7月6日
下一篇 2021年7月6日

相关推荐