"""
RMS 2023 - 1085
"""

import numpy as np
import numpy.random as rd
import matplotlib.pyplot as plt

# simulation

def simul(r):
    valeurs = [0]*r
    i = 0
    while sum(valeurs)<r:
        i += 1
        X = rd.randint(r)
        valeurs[X] = 1
    return i
    
def echantillon(r, N=10000):
    S = []
    for i in range(N):
        S.append(simul(r))
    plt.figure()
    plt.hist(S)
    
# estimation de l'espérance

def moyenne(r, N=10000):
    S = []
    for i in range(N):
        S.append(simul(r))
    return np.mean(S)
    
# Intervalle de confiance

r = 5
N = 10000

def Phi(t):
    xmin, xmax = r*np.log(r) - t*r, r*np.log(r) + t*r
    nb = 0
    for i in range(N):
        T_r = simul(r)
        nb += (T_r>xmin) and (T_r<xmax)
    return nb/N
    
T = np.linspace(0, 3, 100)
P = [ Phi(t) for t in T ]
F = np.exp(-np.exp(-T)) - np.exp(-np.exp(T))
plt.plot(T, P)
plt.plot(T, F)