simul_chapeaux.py

Created by schraf

Created on September 08, 2018

451 Bytes

A une soirée, 50 personnes déposent leur chapeau à un vestiaire. En repartant la dame du vestiaire donne à chacun un chapeau au hasard.
Quelle est la probabilité qu’au moins une des personnes reparte avec son bon chapeau ?

  • Répéter un certain nombre de fois l’expérience (𝑛 = 5000 par exemple)
  • Chaque expérience donnera un résultat (Temps d’attente en minutes, nombre d’allumettes etc.)
  • Faire la moyenne de ces résultats (Somme des résultats divisé par le nombre de simulations)
  • On obtient une estimation ponctuelle de la moyenne (notée 𝑚𝑒)

Explications du programme en vidéo : https://youtu.be/YOBwrrTIHe0?t=26m55s

La valeur théorique est 𝑝 = 1−𝑒−1 ≃ 0,6321


from random import choice

# pas de random.shuffle...

def alea(n):
  l = list(range(n))
  s = []
  while len(l)>0:
    tirage = choice(l)
    l.remove(tirage)
    s.append(tirage)
  return s

def simul(nb):
  n=50
  somme=0
  for s in range(nb):
      chapeaux=alea(n)
      for p in range(n):
          if chapeaux[p]==p:
              somme=somme+1
              break
  return somme/nb
  
  # simul(5000) donne environ 0.6334