博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
蒙提霍尔游戏 python 模拟
阅读量:7058 次
发布时间:2019-06-28

本文共 914 字,大约阅读时间需要 3 分钟。

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

以下代码,本人原创!

完整代码

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://wqrol.baihongyu.com/

你可能感兴趣的文章
架构师看看
查看>>
架构师速成6.18-初中书单资料推荐 分类: 架构师速成 ...
查看>>
Effective C++ Item 28 避免返回对象内部数据的引用或指针
查看>>
VS2012 ASP.NET 母版页的创建与使用
查看>>
beyond compare 与git diff整合
查看>>
收集的几篇关于Asp.Net处理原理和URL重写的几篇文章
查看>>
Bootstrap Table总结
查看>>
物联网如何跳出“看起来很美”?
查看>>
linux命令行后台运行与调回
查看>>
TryEnterCriticalSection
查看>>
用 Java 实现断点续传参考 (HTTP)
查看>>
VB6.0 取 毫秒级 时间戳
查看>>
unity KeyCode各键值说明
查看>>
Delphi中编写无输出函数名的DLL文件
查看>>
centos的基本命令04
查看>>
Codeforces Round #313 (Div. 2) D. Equivalent Strings(字符串+递归)
查看>>
20个案例掌握PL/SQL 基础
查看>>
windows下查看端口占用以及进程名称
查看>>
CH 5101 最长公共上升子序列
查看>>
水平分库分表的关键问题及解决思路
查看>>