# -*- coding: utf-8 -*-
"""
Created on Sat Dec  7 10:21:48 2024

@author: arnau
"""

import numpy as np 
import numpy.random as rd
import matplotlib . pyplot as plt
import math 

#%% Simulation loi géométrique
def simule_geo(p):
    succes = 0
    nb_essais = 0
    while succes == 0:
        if rd.rand()<p:
            succes = 1
        nb_essais +=1
    return nb_essais

#%% Loi géométrique (tronquée)

def geom(p,n):
    '''
    renvoie (P(X=1),...,P(X=n)) pour X de loi géométrique de paramètre p
    '''
    return [p*(1-p)**(k-1) for k in range(1,n+1)]


#%% Fin des fonctions de simulation maison
N = 100000
p = 0.3
n = 11
s = []
L =  [0 for k in range(n)]
for k in range (N ) :
    i = simule_geo(p)
    if i<=n:
        L[i-1]+=1/N

# Affichage histogramme des valeurs de s
#plt . hist (s  ,density = True,rwidth = 0.5)
plt.bar([k for k in range(1,n+1)],L, label='Simulation')  # distrubition expérimentale
plt.bar ([k for k in range(1,n+1)], geom(p,n),color='red',width=0.2, label='distribution théorique') # distribution exacte
plt.legend()