本文主要是介绍伯努利二项分布的相对高概率与实际的低概率,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
伯努利二项分布的相对高概率与实际的低概率
计算公式
P ( X = k ) = C n k p k ( 1 − p ) n − k P(X=k)=C_{n}^{k} p^k(1-p)^{n-k} P(X=k)=Cnkpk(1−p)n−k
n n n 表示试验次数, p p p 表示事件出现的概率, k k k 表示事件出现的次数
简单理解就是,盒子里有total个小球,有 p ∗ t o t a l p*total p∗total个红球, ( 1 − p ) ∗ t o t a l (1-p)*total (1−p)∗total个黑球,每次有放回地取1个小球,每次取到红球的概率为 p p p。
给定 p p p 和 n n n
P ( X = 0 ) + P ( X = 1 ) + P ( X = 2 ) + . . . + P ( X = n ) = 1 P(X=0)+P(X=1)+P(X=2)+...+P(X=n)=1 P(X=0)+P(X=1)+P(X=2)+...+P(X=n)=1
n = 10 , p = 0.3 n=10, p=0.3 n=10,p=0.3, P P P 关于 X X X的函数
X = 3 X=3 X=3 的概率最大, 但是不足0.3
n = 100 , p = 0.3 n=100, p=0.3 n=100,p=0.3 时, P P P 关于 X X X 的函数
X = 30 X=30 X=30 的概率最大,但是不足0.1
n = 100 , p = 0.03 n=100, p=0.03 n=100,p=0.03 时, P P P 关于 X X X 的函数
X = 3 X=3 X=3 的概率最大,但是不足0.3
n = 100 , p = 0.99 n=100, p=0.99 n=100,p=0.99 时, P P P 关于 X X X 的函数
X = 99 X=99 X=99 的概率最大,但是不足0.4
n = 1000 , p = 0.99 n=1000, p=0.99 n=1000,p=0.99 时, P P P 关于 X X X 的函数
X = 990 X=990 X=990 的概率最大,但是不足0.15
由此,我们可以直接假定,小球总数就是 n n n,红球的数量为 n ∗ p n*p n∗p,那么 n n n次试验中出现 n ∗ p n*p n∗p 次红球的概率最高,即 P ( X = n ∗ p ) P(X=n*p) P(X=n∗p) 最大,但是其数值大小并没有想象中的0.8、0.9那么大,但是可以看到
P ( . . . , X = n ∗ p − 3 , X = n ∗ p − 2 , X = n ∗ p − 1 , X = n ∗ p , X = n ∗ p + 1 , X = n ∗ p + 2 , X = n ∗ p + 3 , . . . ) P(...,X=n*p-3,X=n*p-2,X=n*p-1,X=n*p,X=n*p+1,X=n*p+2,X=n*p+3,...) P(...,X=n∗p−3,X=n∗p−2,X=n∗p−1,X=n∗p,X=n∗p+1,X=n∗p+2,X=n∗p+3,...)
的概率接近于 1 1 1 。
综上,给定 p p p 和 n n n
P ( X = n ∗ p ) = C n n ∗ p p n ∗ p ( 1 − p ) n − n ∗ p P(X=n*p)=C_{n}^{n*p} p^{n*p}(1-p)^{n-n*p} P(X=n∗p)=Cnn∗ppn∗p(1−p)n−n∗p
是所有 X = k X=k X=k 中最大的值,但是这个值本身的大小其实不大
给定 n n n ,但是 p p p 可变
这种情况下可以理解为,
有 n = 100 n=100 n=100 个小球,有 0 0 0 个红球, 取 100 100 100 次, 100 100 100 次中只有 0 0 0 个红球的概率;
有 n = 100 n=100 n=100 个小球,有 1 1 1 个红球, 取 100 100 100 次, 100 100 100 次中只有 1 1 1 个红球的概率;
有 n = 100 n=100 n=100 个小球,有 2 2 2 个红球, 取 100 100 100 次, 100 100 100 次中只有 2 2 2 个红球的概率;
有 n = 100 n=100 n=100 个小球,有 3 3 3 个红球, 取 100 100 100 次, 100 100 100 次中只有 3 3 3 个红球的概率;
有 n = 100 n=100 n=100 个小球,有 4 4 4 个红球, 取 100 100 100 次, 100 100 100 次中只有 4 4 4 个红球的概率;
…
有 n = 100 n=100 n=100 个小球,有 99 99 99 个红球, 取 100 100 100 次, 100 100 100 次中只有 99 99 99 个红球的概率;
有 n = 100 n=100 n=100 个小球,有 100 100 100 个红球, 取 100 100 100 次, 100 100 100 次中只有 100 100 100 个红球的概率;
X X X 的取值范围为 [ 0 , 100 ] [0,100] [0,100]
如果记红球的个数为 k k k,那么上述式子就可以改写为:
P ( X = k ) = C n k ( k n ) k ( 1 − k n ) n − k P(X=k)=C_{n}^{k} ({\frac{k}{n}})^{k} (1-{\frac{k}{n}})^{n-k} P(X=k)=Cnk(nk)k(1−nk)n−k
如果 n = 100 n=100 n=100, 得到如下函数图像:
除了 X = 0 X=0 X=0 和 X = 100 X=100 X=100 处, P = 1 P=1 P=1,其余的值都很小,
比如 X = 1 X=1 X=1 或者 X = 99 X=99 X=99 处, P = 0.3697 P=0.3697 P=0.3697
比如 X = 2 X=2 X=2 或者 X = 98 X=98 X=98 处, P = 0.2734 P=0.2734 P=0.2734
比如 X = 3 X=3 X=3 或者 X = 97 X=97 X=97 处, P = 0.2274 P=0.2274 P=0.2274
而当 X = 50 X=50 X=50 的时候, P = 0.0795 P=0.0795 P=0.0795
结论
我们可以得到这样一个形象的说明,假设有 100 100 100 个人给你投票,每个人投给你的概率为 0.99 0.99 0.99,那么最后收到 100 100 100 张票,虽然获得 99 99 99 张投票的概率最大,但是其数值只有 0.3697 0.3697 0.3697,但是获得的票数超过 90 90 90 的概率却大于 0.9999 0.9999 0.9999。如果每个人投给你的概率为 0.5 0.5 0.5,那么你获得50张选票的概率只有 0.0795 0.0795 0.0795,但是你的票数在 [ 40 , 60 ] [40,60] [40,60] 之间的概率为 0.9647 0.9647 0.9647。主要原因在于刚好 50 50 50 票的要求太苛刻,因为有 101 ( 0 − 100 ) 101(0-100) 101(0−100) 种票选结果。
作图代码
给定 n n n 和 p p p
from scipy.special import comb
import numpy as np
import matplotlib.pyplot as pltcount = 100
p_n = 50
p = p_n / count
q = 1 - pn = 100
ps = [i for i in range(n + 1)]
y = []
s = 0
for i in ps:t = comb(n, i) * np.power(p, i) * np.power(q, n - i)if i == n * p:print(t)s += ty.append(t)# a=0
# for i in range(21):
# a+=y[40+i]# print('a=' ,a)
fig, ax = plt.subplots(figsize=(4, 2.5))
print(s)
ax.plot(ps, y)
name = 'n = ' + str(n) + '\np = ' + str(p)
ax.set_xlabel('X', fontsize=12)
ax.set_ylabel('P', fontsize=12)
ax.set_title(name)
ax.grid()
figsave = 'n_' + str(n) + '_p_' + str(p) + '.png'
plt.tight_layout()
plt.savefig(figsave)
plt.close()
给定 n n n
from scipy.special import comb
import numpy as np
import matplotlib.pyplot as pltn = 100ps = [i for i in range(n + 1)]
y = []
s = 0
for p in ps:t = comb(n, p) * np.power(p / n, p) * np.power((1 - p / n), n - p)# if p==1 or p==198:# print(t)s += ty.append(t)fig, ax = plt.subplots(figsize=(4, 2.5))print(s)ax.plot(ps, y)
ax.set_xlabel('X = k', fontsize=12)
ax.set_ylabel('P', fontsize=12)
ax.grid()
ax.set_title('n = ' + str(n), fontsize=12)
plt.tight_layout()
figsave = 'n_' + str(n) + '.png'
plt.savefig(figsave)
plt.close()
这篇关于伯努利二项分布的相对高概率与实际的低概率的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!