利用python和matplotlib对囚犯与盒子问题做可视化分析

本文介绍了如何使用Python的matplotlib库进行数据可视化,通过模拟囚犯与盒子问题,探讨不同策略的效果。文章展示了随机策略和一种标准解法的模拟结果,并通过matplotlib绘制了概率分布图,揭示了策略对成功概率的影响。
摘要由CSDN通过智能技术生成

几天前在看到一道有趣的谜题 : The condemned prisoners and the boxes ,作者给出了解法和并使用 R 来展示分析过程,使用 data visualization 来分析理解问题的方法很赞。

 

R 我没有用过,作为一个 python 爱好者,相信类似的统计分析和可视化 python 一定是有类似的工具的,正好几天前工作中需要分析并可视化数据,就开始寻找,最终在 stackoverflow 上发现很多人推荐 matplotlib 这个工具,配合 ipython 使用,体验很不错,所以遇到这道谜题的时候,用 python+matplotlib 也实验了一把,谜题背后的原理和数据证明参考最后给出的链接,这里主要通过例子来介绍如何使用 python 来做可视化。

 

进入正题:

100 个罪犯,编号 0-99 又有 100 个盒子,每个盒子里放一张带编号的纸条,也是 0-99 ,对应 100 个罪犯,盒子是完全一样的。这 100 个盒子随机排列,成一条直线放在一个房间中。

游戏开始,第一个囚犯进入这个房间,选择 50 个盒子打开,如果有对应自己编号的纸条,视为成功,否则失败,然后离开房间到另外一个封闭的房间,盒子全部合上恢复原样。然后第二个囚犯进入,同样选择 50 个盒子打开,依次类推;

游戏开始之前囚犯可以商量制定策略,开始后囚犯没有机会再相互沟通;

如果 100 个囚犯都找到了自己的编号,这些囚犯就算赢了,可以释放。但是如果有任何一个囚犯没有找到自己的编号,则所有囚犯都不能释放;

囚犯应该采取什么策略才能使大家能被释放的几率最大?

 

简单考虑一下这个问题,能得到几点思路:

1.       如果所有囚犯都随机挑选 50 个盒子,每个人找到自己编号的概率都为 0.5 100 个囚犯都找到自己盒子的概率就是 0.5**100, 几乎为 0 ,所以随机选择可以说必输无疑 ;

2.       不管策略如何,由于盒子的排列完全随机,第一个囚犯不管使用什么策略,获胜的几率恒为 0.5 ,所以所有囚犯都选中的概率不可能大于 0.5;

3.       由于策

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值