-
二项分布(binomial distribution)公式:
n为实验总次数,k是成功的次数,p是成功概率
P(X=k)=C_n^kp^k(1-p)^{n-k}
-
numpy给出的api是:
numpy.random.RandomState.binomial(n, p, size=None)
表示对一个二项分布进行采样(size表示采样的次数,draw samples from a binomial distribution.),参数中的n,p分别对应于公式中的n,p,函数的返回值表示n中成功(success)的次数。
-
例子
可能说起来比较抽象,我们以一个具体的实例进行阐释:
说野外正在进行9(n=9)口石油勘探井的发掘工作,每一口井能够开发出油 的概率是0.1(p=0.1)。请问,最终所有的勘探井都勘探失败的概率?
如果手动计算的话,自然简单运用中学概率知识便可秒答
P(X=0)=C_9^0p^0(1-p)^{n-0}\approx0.3874
因为np.random.binomial()进行的是采样工作,为了逼近这一概率,我们需要进行的是采用统计的方法进行对概率值的逼近:
>>> n, p = 9, .1 # 采样2000次,返回值表示2000次采样中n(即9)中成功的次数 # 这里对成功次数为0的实验进行个数统计加和 >>> sum(np.random.binomial(n, p, size=20000)==0)/20000. 0.3833
np.random.binomial函数返回的其实是一个ndarray,ndarray每个元素代表相应的一次采样实验(一次实验进行n次)中成功的次数,明白了这一点,就很好理解了:
n, p = 9, .1 print(np.random.binomial(n, p, size=20)) [1 2 1 1 0 4 3 1 0 0 0 0 1 2 2 1 0 1 0 0]
-
模拟投硬币
# 两枚都是正面 >>> n, p = 2, .5 >>> sum(np.random.binomial(n, p, size=20000)==2)/20000. 0.24605 # 和我们的精确概率值相接近 # 其中一个为反面 >>> sum(np.random.binomial(n, p, size=20000)==1)/20000. 0.5075 # 两个都是反面 >>> n, p = 2, .5 >>> sum(np.random.binomial(n, p, size=20000)==0)/20000. 0.257
二项分布(np.random.binomial)
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 结合Scikit-learn介绍几种常用的特征选择方法 作者:Edwin Jarvis 特征选择(排序)对于数据科...
- 特征选择 特征选择(排序)对于数据科学家、机器学习从业者来说非常重要。好的特征选择能够提升模型的性能,更能帮助我们...