上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】 设工厂A和B的产品次品率分别为1%和2%,现从工厂A和B分别占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