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

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
finqui sera la file finale - Pour chacune des personnes
vde 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 > 0eti < 99que 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))