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

以下代码,本人原创!

完整代码

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)

效果图

本文转自罗兵博客园博客,原文链接:http://www.cnblogs.com/hhh5460/p/6713994.html,如需转载请自行联系原作者

蒙提霍尔游戏 python 模拟相关推荐

  1. 使用Python模拟蒙蒂霍尔悖论游戏

    假设你正参加一个有奖游戏节目,并且有3道门可选:其中一个后面是汽车,另外两个后面是山羊.你选择一个门,比如说1号门,主持人当然知道每个门后面是什么并且打开了另一个门,比如说3号门,后面是一只山羊.然后 ...

  2. 蒙提霍尔问题(The Monty Hall Problem)解析(贝叶斯分析、Python仿真)

    目录 0. 前言 1. 什么是蒙提霍尔问题(Monty Hall problem) 2. Naive approach:分类讨论 3. Python蒙特卡洛仿真 4. 直观的理解1 5. 贝叶斯方法 ...

  3. 【Java】蒙提霍尔问题的概率原理及随机化模拟

    问题引入 人们常说:"相信自己的直觉"."跟着自己的直觉走,没错的"."要坚定自己的路"-- 不是说这些话不对,但有时候结果还真不是我们直觉 ...

  4. python物理模拟_如何在Python 游戏中模拟引力

    学习如何使用 Python 的 Pygame 模块编程电脑游戏,并开始操作引力. 真实的世界充满了运动和生活.物理学使得真实的生活如此忙碌和动态.物理学是物质在空间中运动的方式.既然一个电脑游戏世界没 ...

  5. python模拟报数游戏有n个人围成一圈,从0到n-1按顺序编号,从第一个人开始从1到k报数,报到k的人推出圈子,然后圈子缩小,从下个人继续游戏,问最后留下来的是几号?

    python模拟报数游戏 有n个人围成一圈,从0到n-1按顺序编号,从第一个人开始从1到k报数,报到k的人推出圈子,然后圈子缩小,从下个人继续游戏,问最后留下来的是几号? from itertools ...

  6. 用python写一个简单的网页游戏_python模拟点击玩游戏的实例讲解

    小编发现很多小伙伴都喜欢玩一些游戏,而手游因为玩的场景限制不多,所以受众的人更多.游戏里有很多重复的任务需要我们完成,虽然过程非常无聊,但是为了任务奖励还是有很多小伙伴不厌其烦的去做.那么,有没有什么 ...

  7. 趣图 | 著名的悖论蒙提霍尔问题到底是什么?

    来源 | 后端技术指南针 写在前面 前几天和同事聊了个问题,觉得还蛮有趣,决定和大家分享一下. Oh My God! 搞它搞它! 题目描述 我们的热心读者小明被选中参加一个抽奖游戏,游戏规则是这样的: ...

  8. 【概率论】蒙提霍尔问题

    文章目录 三门问题 Java模拟 原理分析 简易分析 详细分析 三门问题 三门问题(Monty Hall problem)亦称为蒙提霍尔问题.蒙特霍问题.蒙提霍尔悖论,大致出自美国的电视游戏节目Let ...

  9. Python模拟赌博实验,赌博为什么能赌到倾家荡产?

    Python模拟赌博实验 作者:dalalaa http://www.jianshu.com/p/2d919a028600 概述 前言 实验思路 实验步骤 统计数据 结论 阿广说 福利一刻 推荐阅读 ...

最新文章

  1. react 组件连动效果_react-redux应用之独立组件联动实例
  2. CSS的表白:七夕巧克力心
  3. Linux下进程的建立
  4. 为了输出“,可以使用如下语句print(“““)————(×)
  5. 中国第一个发《Nature》的竟然是清朝人!被皇帝夸天下第一,他却觉得羞耻..........
  6. Flex中的Base64加解密
  7. 在PhpStorm中管理GitHub代码仓库的使用方法
  8. 向“3+1” SQLServer2008集群增加磁盘
  9. POJ 3678 2-SAT简单题
  10. 解决:本地计算机上的MySQL80服务启动后停止,某些服务在未由其他服务或者程序使用时将自动停止
  11. 计算机常用的英语单词及缩写,常见计算机英语缩写及单词
  12. 计算机应用发邮件,使用 SMTP 发送电子邮件
  13. 各场景下NetApp的数据备份推荐(Veeam+群晖NAS)
  14. 淘宝转化率突然下降怎么办?原来是这些原因
  15. 在这个“未来工厂”里, 人类仅凭脑电波控制机器
  16. 【深度学习】02-06-谈谈机器学习的原理(选修)-李宏毅老师2122深度学习课程笔记
  17. WINDOS服务器安全设置
  18. Javascript循环删除数组中元素的3种方法
  19. (STM32笔记)一、STM32特点
  20. HTML和CSS3写的switch插件

热门文章

  1. Could not resolve the package 'english_words' in 'package:english_words/english_words.dart'
  2. CNN: TensorFlow 1.14.0 更新
  3. python/numpy将矩阵保存为文本文件
  4. CPU+GPU异构计算完全解析
  5. mysqladmin 设置用户名初始密码报错you need the SUPER privilege for this operation
  6. JAVA-JAVA WEB开发工具下载与安装
  7. DIOCP 运作核心探密
  8. mysqldump主要参数探究
  9. javascript基础学习一
  10. 用squid配置代理服务器(基于Ubuntu Server 12.04)