# -*- coding: utf-8 -*-
"""
Created on Sun Jun 15 15:05:24 2025

@author: franc
"""

import numpy.random as rd

# Simulation de la variable aléatoire X
def Q1a(n):
    l=[]
    for k in range(n):
        x=rd.randint(1,n+1)
        l.append(x)
    return len(set(l))
    
# Valeur approchée de P(X=k) sur 1000 répétitions de l'expérience     
def Q1b(n,k):
    L=[]
    for i in range(1000):
        L.append(Q1a(n))
    c=0
    for i in range(1000):
        if L[i]==k:
            c+=1
    return c/1000

# Moyenne observée (valeur approchée de l'espérance = moyenne théorique)
# sur 1000 répétitions de l'expérience    
def Q1c(n):
    L=[]
    for i in range(1000):
        L.append(Q1a(n))
    return(sum(L)/1000)
    
# A  vous de tester les fonctions dans la console!    
    