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

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our <a href="https://www.numworks.com/legal/cookies-policy/">cookies policy</a>.