斗地主中,双王和炸弹出现概率统计
2012-04-25 21:54
190 查看
斗地主作为一个很流行的纸牌游戏,深受人民群主的喜爱。其中双王(又称火箭)与炸弹(四张点数一样的牌)是非常厉害的牌。那它们在一场比赛中出现的概率有多大呢?它们两个谁出现的概率更高呢?下面这个程序揭示了结果。
为了便于统计,我们简化模型,54张牌3个人玩,每人平均为17张牌。
persion: 3
repeat count: 10000
rocket probability : 0.314300
bomb probability : 0.317400
从统计结果可以看出,炸弹出现的概率略高于火箭。因此火箭比炸弹大,可见游戏的作者设计的非常缜密。这里或略了真正玩法中,地主多三张牌这个规则,如果读者你能补充这个规则,看看是否还会是火箭的概率低。
为了便于统计,我们简化模型,54张牌3个人玩,每人平均为17张牌。
# -*- coding: utf-8 -*- import random #游戏参与人数,最好是54的因数 persons = 3 #测试重复的次数 repeat_count = 10000 #火箭出现的场次 rocket_count = 0 #炸弹出现的场次 bomb_count = 0 for count in range(repeat_count): #初始化牌 pai_init = [x for x in range(1, 14)] * 4 + [0] + [0] #洗牌 shuffle会将指定序列随机排列 random.shuffle(pai_init) flag_rocket = 0 flag_bomb = 0 for i in range(persons): #每个人的手牌 one_hand = pai_init[i * (54 / persons) : (i + 1) * (54 / persons)] #统计是否出现 火箭 if (one_hand.count(0) == 2): flag_rocket = 1 #统计是否出现炸弹 for i in range(1, 14): if (one_hand.count(i) == 4): flag_bomb = 1 break if (flag_rocket == 1): rocket_count += 1 if (flag_bomb == 1): bomb_count +=1 #结果 print "persion: %d"%(persons) print "repeat count: %d"%(repeat_count) print "rocket probability : %f"%(1.0 * rocket_count / repeat_count) print "bomb probability : %f"%(1.0 * bomb_count / repeat_count)
persion: 3
repeat count: 10000
rocket probability : 0.314300
bomb probability : 0.317400
从统计结果可以看出,炸弹出现的概率略高于火箭。因此火箭比炸弹大,可见游戏的作者设计的非常缜密。这里或略了真正玩法中,地主多三张牌这个规则,如果读者你能补充这个规则,看看是否还会是火箭的概率低。
相关文章推荐
- 统计数组中 某个值出现的概率
- 统计双色球红球出现概率的程序(10000次实验)
- 前端笔试题目练习笔记:统计数组中不同的数字出现的概率并排序
- java 统计文本中出现概率最高的10个字符串!!
- 概率统计数学公式中经常出现的罗马字母及希腊字母的读法
- Java之集合常见例题(1、统计字符出现次数2、集合嵌套遍历。3、斗地主)
- java 统计文本中出现概率最高的10个字符串!!!
- java 统计文本中出现概率最高的10个字符串
- 【C语言】统计数字在排序数组中出现的次数
- Excel在统计分析中的应用—第六章—概率分布及概率分布图-Part1-二项分布函数BINOMDIST的应用
- 1244 数字统计(从1~n各个数字出现的次数)
- Matlab概率统计工具箱(3)
- 统计一个数字在排序数组中出现的次数(二分法)
- 科学计算——概率统计计算机模拟——Python
- C#统计字符串中字符出现的次数
- 统计文件中某个词出现的次数
- Java基础知识强化之集合框架笔记61:Map集合之统计字符串中每个字符出现的次数的案例
- MATLAB概率统计函数(1)
- linux 统计文件中单词出现次数
- Excel-统计不重复数据的个数,设置单元格不允许出现重复数据