蒙提霍尔游戏 python 模拟

简介:

本文使用蒙特卡罗方法验证蒙提霍尔游戏的结论。

以下代码,本人原创!

完整代码

import random


# 蒙提霍尔游戏
def play_game(strategy='nonchange'):
    # 门牌编号
    doors = [0,1,2]

    # 门后的奖品
    gifts = ['goat', 'goat', 'car']
    random.shuffle(gifts)

    # 观众挑选一扇门(编号)
    viewer_choice = random.choice(doors)

    # 主持人从剩下的两扇门中,打开门后是是山羊的某一扇门(编号)
    host_open = random.choice(list(filter(lambda x:gifts[x]=='goat' and x!=viewer_choice, doors)))
    
    # 顺便,也标记剩下的一扇门(编号)
    viewer_lift = list(filter(lambda x:x!=viewer_choice and x!=host_open, doors))[0]

    # 观众根据策略获得的奖品
    viewer_gift = [gifts[viewer_choice], gifts[viewer_lift]][strategy=='change']
    
    # 根据策略成功与否,返回 1、0 (为方便计数)
    return [0, 1][viewer_gift=='car']
    

# 游戏次数
n = 10000


# 蒙特卡罗方法,模拟 n 次游戏
# 策略一:不改变选择
p = sum((play_game('nonchange') for _ in range(n))) / n  # 频率 ≈ 概率
print('nonchange:', p)


# 蒙特卡罗方法,模拟 n 次游戏
# 策略二:改变选择
p = sum((play_game('change') for _ in range(n))) / n     # 频率 ≈ 概率
print('change:', p)

效果图

709432-20170415125015251-318744620.jpg

本文转自罗兵博客园博客,原文链接:http://www.cnblogs.com/hhh5460/p/6713994.html ,如需转载请自行联系原作者
相关文章
|
1月前
|
存储 Java C语言
【python】——使用嵌套列表实现游戏角色管理
【python】——使用嵌套列表实现游戏角色管理
31 0
|
6天前
|
存储 Python
如何使用Python实现“猜数字”游戏
本文介绍了使用Python实现“猜数字”游戏的过程。游戏规则是玩家在给定范围内猜一个由计算机随机生成的整数,猜对则获胜。代码中,首先导入random模块生成随机数,然后在循环中获取玩家输入并判断大小,提供猜小、猜大提示。通过增加猜测次数限制、难度选择、优化输入提示和图形化界面等方式可优化游戏。这篇文章旨在帮助初学者通过实际操作学习Python编程。
25 2
|
1月前
|
存储 Python Windows
10分钟学会用python写游戏,实例教程
10分钟学会用python写游戏,实例教程
31 0
|
2月前
|
Python
Python猜字游戏是一种常见的编程练习
Python猜字游戏是一种常见的编程练习
22 2
|
2月前
|
UED 开发者 Python
制作你的第一个 Python 游戏
想要制作一个 Python 游戏?这是一个令人兴奋的项目!在这篇文章中,我将引导你完成制作第一个 Python 游戏的步骤。即使你没有编程经验,也不用担心,我们将从基础开始,一起探索游戏开发的乐趣。
|
2月前
|
计算机视觉 Python
用 Python 开发简单的游戏
游戏开发是一个充满乐趣和挑战的领域,而 Python 作为一种强大的编程语言,为游戏开发提供了丰富的工具和可能性。在本文中,我们将探讨如何使用 Python 开发简单的游戏,并提供一些基本的示例和指导。
|
2月前
|
存储 编译器 Python
python实战【外星人入侵】游戏并改编为【梅西vsC罗】(球迷整活)——搭建环境、源码、读取最高分及生成可执行的.exe文件
python实战【外星人入侵】游戏并改编为【梅西vsC罗】(球迷整活)——搭建环境、源码、读取最高分及生成可执行的.exe文件
|
2月前
|
IDE 开发工具 Python
用python写出一个猜数字游戏
用python写出一个猜数字游戏
32 4
|
3月前
|
机器学习/深度学习 Python
Python “贪吃蛇”游戏,在不断改进中学习pygame编程
Python “贪吃蛇”游戏,在不断改进中学习pygame编程
53 0
Python “贪吃蛇”游戏,在不断改进中学习pygame编程
|
3月前
|
C++ Python Rust
Rust每日一练(Leetday0015) 字符串相乘、通配符匹配、跳跃游戏II
Rust每日一练(Leetday0015) 字符串相乘、通配符匹配、跳跃游戏II
26 0
Rust每日一练(Leetday0015) 字符串相乘、通配符匹配、跳跃游戏II