Python基础——Numpy:用随机函数包解读三门问题

背景介绍:三门问题:假设你参加一个电视游戏节目,节目现场有三扇门,其中一扇门后面是一辆车,另外两扇门后面则是山羊。主持人让你选择其中的一扇门。不妨假设你选择了一号门吧。主持人故意打开了另外一扇门,比如说三号门,让你看见三号门的后面是山羊。然后主持人问你,“你想改变你的选择,换成二号门吗?”这时候,你会怎么做?接下来我们通过numpy的介绍来解读这一问题选择

1.什么是Numpy

作为python三大基础包numpy,pandas,matplotlib之一的numpy,它提供了python对多维数据对象的支持:ndarray,具有矢量

运算能力。numpy支持高级大量的维度数组与矩阵运算,此外也针对数据运算提供大量的数据函数库

2.创建ndarray数组

ndarray:N维数组对象(矩阵),所有元素必须是相同类型

ndarray属性:ndim属性,表示维度个数;shape属性,表示各维度大小;dtype属性,表示数据类型

常用的函数 

import numpy as np
# 把数组等变为ndarray
a = list(range(10))
b = np.array(a)
c = np.array([2,3,1])
d = np.array([[2],[3],[1]])
# numpy的一些常用函数
e = np.arange(10)
p = np.array([[1,2],[2,3]])
np.save('test.npy',p)
pp = np.load('test.npy')
f = np.sin(np.pi)
g = np.tan(np.pi/4)
j = np.ones((3,3),dtype=np.int)

3.numpy中的随机数

import numpy.random模块

常用的numpy.random模块函数:

4.ndarray数组的拆分与合并 

函数整理:

5.三门问题的解答 

# 三门问题
import numpy.random as random
def test():
    #测试次数
    n_test = 100000
    winning_door = random.randint(0,3,n_test)
    first_get  = 0
    change_get = 0
    for winning_doors in winning_door:
        act_door = random.randint(0,3)
        if winning_doors == act_door:
            first_get += 1
        else :
            change_get += 1
    first_pro  = first_get / n_test
    change_pro = change_get / n_test
    compar1    = round(change_get / first_get,2)
    print ("在%d次测试中,坚持原则第一次就选中的次数是%d,改变决定选择另一扇门中奖的次数是%d"% (n_test,first_get,change_get))
    print ("概率分别是{0}和{1},改变决定选择另一扇门中奖几率是坚持选择的{2}倍".format(first_pro,change_pro,compar1))
test()

最终输出结果是:

在100000次测试中,坚持原则第一次就选中的次数是33535,改变决定选择另一扇门中奖的次数是66465
概率分别是0.33535和0.66465,改变决定选择另一扇门中奖几率是坚持选择的1.98倍

所以如果在主持人开启上帝视角,他知道哪扇门是正确的时候,这个时候就需要果断换,因为你改变决定的中奖概率是不改的2倍

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神芷迦蓝寺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值