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))