扑克牌斗牛游戏的概率问题

前几天过年跟亲朋好友玩起了斗牛,感觉还是挺刺激的,我发现有时候会连续好几把没有牛(脸黑的不适合这游戏…),让我对这概率产生了兴趣,就随便用c编程模拟计算了一下概率。

玩法简介:一副牌去掉大小王,其中JQK当做点数10,每人5张牌,以三张一卡、两张一卡的形式,当其中三张卡点数和为10的倍数,这叫“牛”,另外两张牌点数和若也为10的倍数,即为“牛牛”,此种牌最大,否则模10即为结果,越大牌也就越大;若没有三张卡点数和为10的倍数,则没有“牛”,此种牌最小。

判断拿到的牌的结果:只有5张牌,可以直接暴力,取三张看是否是10的倍数,即是否有“牛”,没有直接返回0;若有,则计算剩下两张牌模10的结果,如果为0,返回10,否则返回该结果。

计算每种牛概率:首先假设每张牌发到的概率相等,那么可以直接暴力遍历所有种发到的牌的组合数,共有C(5,52)=2598960种可能,显然运算速度太慢了。之后发现好多相同数字组合的重复计算了,因此考虑直接遍历所有数字组合,对每种组合再计算其所有可能牌的组合数,例如:拿到的牌数字为4、4、5、5、10,那么出现这种组合共有C(2,4)*C(2,4)*C(1,4)=144种可能,该组合牌结果为“牛8”,结果数组cnt[8]+=144即可。

结果:

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值