
Python的scipy.stats包中提供了各种随机变量的分布。每一种分布,其累积分布函数(分布函数)记为cdf。离散型变量分布的概率质量函数(分布律),记为pmf。除此之外,每个分布都有一个服从该分部变量发生器函数rvs,用来产生服从该分布的随机数。
1. bernoulli分布(0-1分布)
Python的scipy.stats包中,bernoulli类就是用来表示伯努利分布的。常用的三个函数说明见下表。
函数名 | 参数 | 功能 |
rvs(p, size) | p:分布参数,size:产生的随机数个数,缺省值为1 | 产生size个随机数 |
pmf(k, p) | k:随机变量取值,p:与上同 | 概率质量函数(分布律) |
cdf(k, p) | k:分布函数自变量,p:与上同 | 累积概率函数(分布函数) |
例1 下列代码利用bernoulli类对象的rvs函数模拟重复抛掷均匀分币试验。 |
from scipy.stats import bernoulli #导入bernoulli
import numpy as np #导入numpy
x=bernoulli.rvs(p=1/2,size=500) #产生500个服从p=1/2的0-1分布的随机数
hist, _=np.histogram(x, bins=2) #统计取0、1的频数
hist/500 #输出频率其中的第3行调用bernoulli类对象的随机数发生函数rvs产生500个服从参数的0-1分布(抛掷均匀分币0,1分别表示正面朝下和正面朝上)的随机数。第4行调用numpy的histogram函数统计500个数据中取0、1的频数。第5行输出频率。运行程序,输出
array([0.498, 0.502])可见取0和1的频率分别为0.499和0.502,很好地模拟了抛掷均匀分币这一伯努利试验。
2. geom分布(几何分布)
scipy.stats包提供的geom类表示几何分布。常用的三个函数rvs、pmf和cdf的名称、参数和意义是完全一致的。这是因为0-1分布和几何分布均仅有一个表示一次试验成功概率的参数。由此可见,引入随机变量处理不同随机试验下的随机事件概率问题的形式是统一的。
例2 设灯泡在任意一天损坏的概率,计算该灯泡的寿命至少为30天的概率。
解:设灯泡的使用寿命(单位:天)为,则
服从参数为
的几何分布。令
,灯泡寿命至少为30天的概率
下列代码验算本例中灯泡寿命至少为30天的概率。
from scipy.stats import geom #导入geom
prob=1-geom.cdf(k=29,p=0.001) #计算1-F(29)
print('P(X>=30)=1-F(29)=%.4f'%prob) #输出P(X>=30)程序的第2行调用geom(第1行导入)的cdf函数,计算。运行程序,输出
P(X>=30)=1-F(29)=0.9714scipy.stats为每一种分布提供残存函数sf,该函数计算。例如,在上列程序中,将第2行代码换成
来计算服从参数为的几何分布的随机变量
的概率
。
















