# -*- coding: utf-8 -*-
"""
Created on Thu Nov 27 10:19:01 2025

@author: pjaub
"""

import random as rd



def simul():
    urne = 3*[1] + 3*[2] + 3*[3]
    L = []
    while True:
        a = urne.pop(rd.randrange(len(urne)))
        L.append(a)
        if 1 in L and 2 in L and 3 in L:
            return len(L)
        
# Estimation de la loi

T = 8*[0]
N = 10000
for k in range(N):
    T[simul()] += 1
print("Estimation de la loi de X")
print([t/N for t in T[3:]])
print("Valeur théorique")
print([9/28,9/28,3/14,3/28,1/28])


print(' ')

# Estimation de l'espérance

s = 0
N = 10000
for k in range(N):
    s += simul()
print("Estimation de l'espérance de X")
print(s/N)
print("Valeur théorique")
print(59/14)


# Avec remise

def simul():
    urne = 3*[1] + 3*[2] + 3*[3]
    L = []
    while True:
        a = rd.choice(urne)
        L.append(a)
        if 1 in L and 2 in L and 3 in L:
            return len(L)
        
# Estimation de la loi

T = 30*[0]
N = 10000
for k in range(N):
    T[simul()] += 1
print("Estimation de la loi de X")
print([t/N for t in T[3:]])
print("Valeur théorique")
print([round((2**(k-1)-2)/3**(k-1),4) for k in range(3,28)])


print(' ')

# Estimation de l'espérance

s = 0
N = 10000
for k in range(N):
    s += simul()
print("Estimation de l'espérance de X")
print(s/N)
print("Valeur théorique")
print(11/2)