三门问题之python解答

简介:

 最近,在网上看到一个有趣的三门问题,遂准备用python来娱乐下。下边是三门问题的介绍。

  三门问题(Monty Hall problem)亦称为蒙提霍尔问题、蒙特霍问题或蒙提霍尔悖论,大致出自美国的电视游戏节目 Let's Make a Deal。问题名字来自该节目的主持人蒙提·霍尔(Monty Hall)。

  参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。


问题是:换另一扇门会否增加参赛者赢得汽车的机率?


要求:

通过程序模拟三门问题,并重复进行大量测试,统计换门与不换门的情况下,赢得汽车的概率。


下边是解答的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/python
#coding:utf-8
total = 100000
a = b = c = d = e = f = 0.00
x = 0
from  random  import  randint
list = [ "sheep1" , "sheep2" , "car" ]
tuple = ( "yes" , "no" )
while  x! = total:
    t = randint( 0 , 2 )
    i = randint( 0 , 1 )
#   print list[t],tuple[i] 
    if  list [t] = = "car" :
         if  tuple [i] = = "yes" :
          a + = 1
         else :
          b + = 1
    elif  list [t] = = "sheep1" :
if  tuple [i] = = "yes" :
            c + = 1
         else :
            d + = 1
    elif  list [t] = = "sheep2" :
         if  tuple [i] = = "yes" :
            e + = 1
         else :
            f + = 1
    x + = 1
print  "总次数为%d" % (total)
print  "换%d"  % (a + c + e), "不换%d"  % (b + d + f)
print  "不换赢的概率为%.2f%%" % (b / (c + b + e) * 100 )
print  "换赢的概率为%.2f%%" % ((c + e) / (c + b + e) * 100 )

下图运行结果:

wKiom1i4z9qDqEpZAAA28hBwHZg264.png

结论: 由此可以看出,换门赢的概率大约是不换赢的概率的2倍,所以换门能增加参赛者赢得汽车的概率。



本文转自 goldfishe 51CTO博客,原文链接:http://blog.51cto.com/jack88/1902857

相关文章
|
Python
用python解决养兔子趣味问题
今天看到了一个很有趣的养兔子问题,决定尝试一下,各位大佬如果有其他思路,欢迎交流,在评论区写下你的想法哦!
313 0
用python解决养兔子趣味问题
Python遇到的问题:IndentationError: expected an indented block
Python遇到的问题:IndentationError: expected an indented block
|
Python
python: not found 问题的解决
python: not found 问题的解决
644 0
|
Python
Python—Python 问题
离线安装库
110 0
|
Python 算法框架/工具 TensorFlow
Python热门问题及解决方法
Python热门问题及解决方法,转自阿里云开发者问答,大家有问题可以移步阿里云问答模块:https://developer.aliyun.com/ask/ Python字符串比较最小/最大strhttps://yq.
3353 0
|
索引 Python
Python面试中一些常见的问题及其答案
Q 1:Python 有哪些特点和优点? 作为一门编程入门语言,Python 主要有以下特点和优点: ● 可解释● 具有动态特性● 面向对象● 简明简单● 开源● 具有强大的社区支持当然,实际上 Python 的优点远不止如此,可以阅读该文档,详细了解: https://data-flair.training/blogs/python-tutorial/ Q 2:深拷贝和浅拷贝之间的区别是什么? 答:深拷贝就是将一个对象拷贝到另一个对象中,这意味着如果你对一个对象的拷贝做出改变时,不会影响原对象。
1851 0
|
安全 程序员 开发者
|
Python
python问题汇总
字符串前加r ‘r’是防止字符转义的 如果路径中出现’\t’的话 不加r的话\t就会被转义 而加了’r’之后’\t’就能保留原有的样子 在字符串赋值的时候 前面加’r’可以防止字符串在时候...
690 0