loi B

ZENO · updated October 06, 2023
import numpy as np
import numpy.random as rd
import matplotlib.pyplot as plt
import time


    #Première simulation
def binomiale(p,nb_sim,N):
    plt.close()
    rd.random(10)
    start=time.time()
    X=np.zeros(nb_sim)
    for k in range (nb_sim):
        nb_succes=0
        for _ in range (N):
            if rd.random()<p:
                nb_succes+=1
        X[k]=nb_succes
    end=time.time()
    duree=str("{:.2f}".format(1000*(end-start)))+"ms"
    print(X,"nombre de succès à chaque fois")

    B=np.zeros(N+1)
    Z=(np.append([1], np.cumprod(np.arange(N,0,-1)/np.arange(1,N+1))))
    for k in range(N+1):
        B[k]=Z[k]*(p**k)*((1-p)**(N-k))



    A=np.zeros(nb_sim)
    for k in range (nb_sim):
        A[k]=np.sum(X==k)
    print(A,"résultats fréquence")

#A quoi ça sert si c'est pas lui dans le tableau ? = pour utiliser A il aurait fallu faire un plot et pas un histogramme : un histogramme réarange lui même les valeurs.

    y=np.arange(N+2)
    plt.subplot(1,2,1)
    plt.hist(X, y, rwidth=0.8, align="left", density="True",label="empirique")
    plt.plot([0,N+1],B, "D",label="theorique")
    plt.title("rd.random, t=" + duree)
    plt.legend()


    #Deuxième simulation
    start=time.time()
    z=rd.binomial(N,p,nb_sim)
    end=time.time()
    duree=str("{:.2f}".format(1000*(end-start)))+"ms"
    plt.subplot(1,2,2)
    plt.hist(z,np.arange(N+2),rwidth=0.8,align="left",density="True",label="empirique")
    plt.plot([0,N+1],B, "D",label="theorique")
    plt.title("binomiale t=" + duree)
    plt.legend()
    plt.show()

    

Output

Comments

Please sign up or log in to contribute to the discussion.