Python概率统计
上QQ阅读APP看书,第一时间看更新

1.10 本章上机练习

实训环境

(1)使用Python 3.x版本。

(2)使用IPython或Jupyter Notebook交互式编辑器,推荐使用Anaconda发行版中自带的IPython或Jupyter Notebook。

实训1-1】 求排列数,代码如下:

     #第1章/1-16.py
     from scipy.special import perm
     N = 20
     k = 10
     print(perm(N, k))

输出如下:

     670442572800.0

实训1-2】 求组合数,代码如下:

     #第1章/1-17.py
     from scipy.special import comb
     N = 20
     k = 10
     print(comb(N, k))

输出如下:

     184756.0

实训1-3】 用蒙特卡罗方法估计y=sin(x)在[0,π]上的积分,代码如下:

     #第1章/1-18.py
     import numpy as np
     #共产生N个点, 每个点两个坐标
     N = 1000000
     M = 2
     #生成随机点
     r = np.random.rand(N, M)
     #横坐标变换为0和pi之间
     x = r[:, 0] * np.pi
     y = r[:, 1]
     #计算y = sin(x)曲线之下的点的个数
     result = y < = np.sin(x)
     print('积分的估计值为', result.sum()/N * np.pi)

输出如下:

     积分的估计值为2.00186996275722

实训1-4】 用蒙特卡罗方法估计y=x2在[0,1]上的积分,代码如下:

     #第1章/1-19.py
     import numpy as np
     #共产生N个点, 每个点两个坐标
     N = 100000
     M = 2
     #生成随机点
     r = np.random.rand(N, M)
     #横坐标变换为0和pi之间
     x = r[:, 0]
     y = r[:, 1]
     #计算y = x^2曲线之下的点的个数
     result = y < = x ** 2
     print('积分的估计值为', result.sum()/N)

输出如下:

     积分的估计值为0.3324

实训1-5】 设工厂AB的产品次品率分别为1%和2%,现从工厂AB分别占55%和45%的一批产品中随机抽取一件,发现是次品,则该次品是工厂A生产的概率是多少?代码如下:

     #第1章/1-20.py
     #次品率
     r1 = 0.01
     r2 = 0.02
     #产品比例
     x1 = 0.55
     x2 = 0.45
     #贝叶斯公式
     t = r1 * x1 + r2 * x2
     p = r1 * x1/t
     print('A厂生产的概率为', p)

输出如下:

     A厂生产的概率为0.3793103448275862

实训1-6】 人的血型中,O型、A型、B型、AB型的概率分别为0.46、0.40、0.11、0.03。现在任选5人,求下列事件的概率

(1)恰有两人为O型。

(2)三人为O型,两人为A型。

(3)没有AB型。

代码如下:

     #第1章/1-21.py
     from scipy.special import comb
     n = 5
     #第(1)问
     PO = 0.46
     p = comb(n, 2) * PO ** 2 * (1-PO) ** (n - 2)
     print('恰有两人为O型概率为', p)
     #第(2)问
     PA = 0.4
     p = comb(n, 2) * PO ** 3 * (1-PO) ** (n - 2)
     print('三人为O型, 两人为A型的概率为', p)
     #第(3)问
     q = 1-0.03
     p = q ** n
     print('没有AB型的概率为', p)

输出如下:

     恰有两人为O型概率为0.3331938240000001
     三人为O型, 两人为A型的概率为0.15326915904000002
     没有AB型的概率为0.8587340256999999