问题描述
“100 道题,每道题有 4 个可能的答案。如果随机选择每道题的答案,通过考试的概率是多少(获得 40% 或更多)”
x = ?
n = 100
p = 0.25
计算 40% 或更少就像只为 x 的值输入 40 一样简单,但我如何将其转换为 40% 或更多?我试过 -40、60、-60,但显然这是错误的。
import scipy.stats as stats
cum_binomalpha = stats.binom.pmf(40,n=100,p=0.25)
print(round(cum_binomalpha,6))
编辑 - 可爱的多维解决方案
import scipy.stats as stats
cumm_binomalpha = stats.binom.cdf(39,p=0.25)
print (round(1-cumm_binomalpha,6))
解决方法
您可以使用 sympy 获得准确答案:
from sympy import S
from sympy.stats import Binomial,P
b = Binomial('b',100,S(1) / 4)
print(P(b >= 40).evalf(),P(b >= 40))
结果:
0.000686592207962991
68956946241719424989885392307281546441260036992065207027/100433627766186892221372630771322662657637687111424552206336
使用 scipy,您可以尝试以下操作:
import scipy.stats as stats
import numpy as np
print(stats.binom.pmf(np.arange(40,101),n=100,p=0.25).sum())
print(1 - stats.binom.cdf(39,p=0.25))