humourvirus.py

Created by schraf

Created on January 12, 2022

381 Bytes

Exercice posté sur "Le coin boulot des profs de mathématiques"

Rejoindre ce groupe

Ma chaine Youtube consacrée aux maths et à l’informatique

Explications du programme

  • On fait 10000 simulations, soit 10000 files d’attente
  • A chaque simulation on crée une file de personnes nommée pers, une personne ayant le virus (noté 1) avec une probabilité de 40% et saine sinon (noté 0)
  • On duplique cette liste dans fin qui sera la file finale
  • Pour chacune des personnes v de la file initiale, on regarde si elle a le virus : v == 1
  • Si c’est le cas, dans 20% des cas elle contamine la personne derrière elle : fin[i - 1] = 1
  • Et dans 20% des cas celle de devant
  • On vérifie avec i > 0 et i < 99 que l’on ne sort pas de la file (la prochaine personne qui va être testée ne peut pas contaminée celle qui est devant elle puisque c’est la première…)
  • En sortant de la boucle, on compte le nombre de personnes contaminées et on l’additionne aux valeurs trouvées dans les autres simulations
  • On affiche la moyenne (ou mieux, un intervalle de confiance)


from random import *

succes = 0
nbsimul = 10000

for _ in range(nbsimul):
  pers = [1 if random() < .4 else 0 for _ in range(100)]
  fin = list(pers)
  for i,v in enumerate(pers):
    if v == 1:
      if random() < .2 and i > 0: fin[i - 1] = 1
      if random() < .2 and i < 99: fin[i + 1] = 1
  succes += sum(fin)
print("{:.2%}".format(succes / nbsimul / 100))

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 cookies policy.