随机抽样
numpy.random 模块对 Python 内置的 random 进行了补充,增加了一些用于高效生成多种概率分布的样本值的函数,如正态分布、泊松分布等。
numpy.random.seed(seed=None)
Seed the generator.
seed()
用于指定随机数生成时所用算法开始的整数值,如果使用相同的 seed() 值,则每次生成的随
机数都相同,如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间
差异而不同。
离散型随机变量
二项分布
二项分布概率函数的数学表示:
numpy.random.binomial(n, p, size=None)
Draw samples from a binomial distribution.
表示对一个二项分布进行采样, size 表示采样的次数, n 表示做了 n 重伯努利试验, p 表示成功的
概率,函数的返回值表示 n 中成功的次数。
【例】野外正在进行9(n=9)口石油勘探井的发掘工作,每一口井能够开发出油的概率是0.1(p=0.1)。请问,最终所有的勘探井都勘探失败的概率?
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
np.random.seed(20200605)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
n=9 #做某件事情的次数
p=0.1 #做某件事情成功的概率
size=50000
x=np.random.binomial(n,p,size)
print(np.sum(x==0)/size) #输出结果为:0.3897
plt.hist(x)
plt.xlabel('随机变量:成功次数')
plt.ylabel('样本中出现的次数')
plt.show()
【例】模拟投硬币,投2次,请问两次都为正面的概率?
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
np.random.seed(20200605)
n=2 #做某件事情的次数,这里是投两次硬币
p=0.5 #做某件事情成功的概率,在这里即投硬币为正面的概率
size =50000
x=np.random.binomial(n,p,size)
print(np.sum(x==0)/size) #0.25154
print(np.sum(x==1)/size) #0.49874
print(np.sum(x==2)/size) # 0.24972
plt.hist(x,density = True)
plt.xlabel('随机变量:硬币为正面次数')
plt.ylabel('50000个样本中出现的次数')
plt.show()
#返回一个列表,列表中每个元素表示随机变量中对于值的概率
s=stats.binom.pmf(range(n+1),n,p)
print(np.around(s,3)) #[0.25 0.5 0.25]
#计算期望和方差
'''
期望:E