import numpy.random as nrd
from math import comb,exp,factorial
import matplotlib.pyplot as plt

n=30
p=.1
lam = n*p
tailleEchantillon = 1000

echantillon = nrd.poisson(lam,tailleEchantillon)

vMax = max(echantillon)
histo = [0]*(vMax+1)

for x in echantillon :
    histo[x] += 1

for i in range(vMax+1) :
    histo[i]=histo[i]/tailleEchantillon

loiBinomiale = [p**k *(1-p)**(n-k)*comb(n,k) for k in range(vMax+1)]
loiPoisson = [exp(-lam)*(lam)**k/factorial(k) for k in range(vMax+1)]

plt.clf()
listeAbscissesHisto = [k-0.3 for k in range(vMax+1)]
listeAbscissesLoiPoisson = [k for k in range(vMax+1)]
listeAbscissesLoiBinomiale = [k+0.3 for k in range(vMax+1)]

plt.bar(listeAbscissesHisto,histo,0.3,label='Histogramme, $X\\hookrightarrow\\mathcal{P}(n,\\lambda)$')
plt.bar(listeAbscissesLoiPoisson,loiPoisson,0.3,label='$X\\hookrightarrow\\mathcal{P}(n,\\lambda)$')
plt.bar(listeAbscissesLoiBinomiale,loiBinomiale,0.3,label="$X\\hookrightarrow \\mathcal{B}(n,p)$")
plt.xlabel("$k$")
plt.ylabel("$P(X=k)$")
plt.legend()
plt.show()
