Я подозреваю, что есть конкретная c причина не использовать 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()
Сгенерированный вывод будет выглядеть следующим образом :
![Output](https://i.stack.imgur.com/DaSrP.png)
Надеюсь, это поможет!
----------------------------------------
System information
----------------------------------------
Platform: Windows-10-10.0.16299-SP0
Python: 3.8.1
Matplotlib: 3.2.0rc1
----------------------------------------