import random

def prisonnier(p : int, boites : list[int]) -> bool:
    ouvrir = p
    for _ in range(50):
        if boites[ouvrir] == p:
            return True
        else:
            ouvrir = boites[ouvrir]
    return False

def simulation_100() -> bool:
    boites = list(range(100))
    random.shuffle(boites)
    for i in range(100):
        if not prisonnier(i, boites):
            return False
    return True

essaies = 10000
reussites = 0
for _ in range(essaies):
    if simulation_100():
        reussites += 1
print(reussites / essaies)
