羊车门

作业完成人:
学号:20181703112,罗子健
学号:20181101052,蒋若辉

题目描述:有3扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择。

1、按照你的第一感觉回答,你觉得不换选择能有更高的几率获得汽车,还是换选择能有更高的几率获得汽车?或几率没有发生变化?

答:换了几率更大

2、请自己认真分析一下“不换选择能有更高的几率获得汽车,还是换选择能有更高的几率获得汽车?或几率没有发生变化?” 写出你分析的思路和结果。

答:

思路1

这里有三个门
首先你随机选择一个门 , 然后主持人打开一个有羊的门,
如果你选对了
不改变选择就可以得到车 改变选择就得不到车
如果你没选对
改变选择就可以得到车 不改变选择就得不到车
所以 这个问题变成了 两个随机数(一到三之间)是否相等的问题
按照数学的概率来算
两个数相等(不改变选择):1/3
两个数不相等(改变选择):2/3

思路2

这种解法就是严格模拟“羊与车”题面所叙述的过程。
首先我们先声明两个变量change和unchange用0表示表示门里有羊,1表示门里有车,先随机生成‘001’的全排列,再模拟玩家选择一扇门,如果选的是有车的门,主持人开启一扇有羊的门,这时参赛者就只用在剩下的门二选一,如果换了就不得奖,不换就得奖,这时我们在生成一个0或1的随机数(0表示不换,1表示换),如果随机数为0,不换,参赛者得奖unchange+1;如果选的是有羊的门,主持人开启另一扇有羊的门,这时参赛者也在剩下的门二选一,如果换了就得奖,不换就不得奖,这时我们在生成一个0或1的随机数(0表示不换,1表示换),如果随机数为1,换了,参赛者得奖,change+1。循环100000次,比较unchange多还是change多,如果unchange多则不换赢面大,change多则换的赢面大。

3、请设法编写程序验证自己的想法,验证的结果支持了你的分析结果,还是没有支持你的分析结果,请写出程序运行结果,以及其是否支持你的分析。(提示:可以借助随机数函数完成此程序)

4、请附上你的代码。(提示:使用编辑器中的插入代码功能,将代码显示为 Python 风格)

代码如下

思路1代码

import random
change,nochange=0,0
for i in range(1,100000):
  if random.randint(1,3)==random.randint(1,3):
    nochange+=1
  else:
    change+=1
print("不改选中概率:{}%".format(nchange/1000))
print("改选中概率:{}%".format(change/1000))

程序运行结果:

不改选中概率:33.319%
改选中概率:66.68%

成功


思路2代码

import random
change=0
unchange=0
for i in range(0,100000):
    a=random.randint(0,1)
    if a==0:
        b=random.randint(0,1)
        if b==0:
            c=1
        else:
            c=0
    else:
        b=0
        c=0
    i=random.randint(0,2)
    arr=[a,b,c]
    if arr[i]==1:
        e=random.randint(0,1)
        if e==0:
            unchange+=1
    else:
        e=random.randint(0,1)
        if e==1:
            change+=1
print(change)
print(unchange)
if change>unchange:
    print("change")
else:
    print("unchange")


程序运行结果:

33404
16907
change

成功

原文地址:https://www.cnblogs.com/x1aolata/p/10732608.html