def fac(n):
value = 1
for i in range(2,n+1):
value = value * i
return value
def C(n,k):
return fac(n)/(fac(k) * (fac(n-k)))
for k in range(1,100):
for n in [10,20,30]:
F=C(n,k)
plt.plot(k,F)
plt.legend()
plt.show()
我想将二项式函数绘制k
为某些n
值的函数n = 10, 20, 30, ...
但是,我不知道该如何绘制。
我怀疑,有一个特定的原因不使用NumPy,所以这是一个使用纯Python的解决方案。
如果您在谈论二项式分布,那么公式需要包含概率p。我在下面的代码中添加了它。(如果您实际上只想拥有二项式系数,请删除两个pow
项。)
通常,对于绘制,您需要将x和y值收集在某些数组中(例如X
和Y
),以便可以plt.plot(X, Y)
绘制整个函数。
在您的示例中,您还需要切换两个循环,因为您想要具有三个函数,每个函数用于k = [1 ... 100]
。
那是我的解决方案:
from matplotlib import pyplot as plt
def fac(n):
value = 1
for i in range(2, n+1):
value = value * i
return value
def C(n, k, p):
return fac(n)/(fac(k) * (fac(n-k))) * pow(p, k) * pow(1-p, n-k)
for N in [10, 20, 30]:
X = []
Y = []
for K in range(1, 100):
X.append(K)
Y.append(C(N, K, 0.5))
plt.plot(X, Y)
plt.legend(('N = 10', 'N = 20', 'N = 30'))
plt.show()
生成的输出如下所示:
希望有帮助!
----------------------------------------
System information
----------------------------------------
Platform: Windows-10-10.0.16299-SP0
Python: 3.8.1
Matplotlib: 3.2.0rc1
----------------------------------------
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句