Python计算21点扑克牌概率,判断是否要牌

21点,BlackJack是很流行的一款扑克游戏。开局阶段,给玩家发两张牌(都是明牌),给庄家发两张牌(一张明牌,一张暗牌)。之后玩家可以选择要牌或停止。在玩家停止要牌后,庄家必须一直要牌大于16点。

如果玩家的牌大于22点,则玩家“爆牌”输。如果庄家的牌大于22点,则庄家“爆牌”输。如果大家都没有爆牌,那就开始比较大小,来判断庄家胜利还是玩家胜利。

比较特殊的地方在于,A可以是11或者1。以及JQK都是10点。如果开局直接发到【A,10】,【A,J】,【A,Q】,【A,K】则称为直接获得了BlackJack。如果是玩家获得了BlackJack则玩家直接胜利,如果是庄家获得了Black Jack则玩家直接输。

这个游戏玩家的核心是,根据玩家手上的牌,以及庄家露出来的牌,判断是否要牌。那么我这个程序就是计算何时计算。一般的21点游戏中,都是多副扑克牌。因此可以近似认为每一张牌抽到的概率都是一样大的(即假设从无穷多的牌里面抽牌)。

程序分两个部分,第一个部分是计算庄家露出来的牌,及其最后的概率。先贴结果。

第二个部分是根据目前玩家手中牌的和,计算玩家再【要一张牌】的情况下,【获胜或打平】的概率。注意这里是只要一张牌,所以这个概率可能定量是有问题的。结论是玩家手牌大于等于17后就别再要了。

 

计算21点的代码参考了
Python实现21点扑克牌游戏_索儿呀的博客-CSDN博客_21点扑克牌游戏python

这个程序就是套一个大循环遍历的

第一段代码


Cards = ['','A','2','3','4','5','6','7','8','9','10','J','Q','K']
values = {1:11,2:2, 3:3, 4:4, 5:5, 6:6, 7:7, 8:8,9:9, 10:10, 11:10, 12:10, 13:10}

def compute_total(hand):
    """计算并返回一手牌的点数和"""
    result = 0 #初始化点数和为0
    numAces = 0 #A的个数
    # 计算点数和A的个数
    for card in hand:
    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值