Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #medic.py
- import random
- from itertools import islice
- #retourne: un médicament au hasard parmis ma, mb et mc
- def gen_medicament():
- medics = ("ma","mb","mc")
- return random.choice(medics)
- #parametre: un médicament
- #retourne: si le médicament soigne le patient ou pas
- # ma à 98% de chance de réussite
- # mb à 96% de chance de réussite
- # mc à 95% de chance de réussite
- # (en gros) si "ma" est donné en parametre ca a 98% de chance de renvoyer true et 2% de false
- def est_soigne(medic):
- r = random.random()
- tx_reussite = {"ma": .98, 'mb': .96, 'mc': .95}
- return r <= tx_reussite[medic]
- #execute le test: prend un médicament au hasard et le teste
- #retourne true ou false
- def test():
- m = gen_medicament()
- return est_soigne(m)
- #premier test
- #execute 10000 test et retourne le nombre de true et de false
- def prog1():
- print("Début du programme !")
- cptTrue = 0
- cptFalse = 0
- for i in range(1,10000):
- if(test()):
- cptTrue = cptTrue +1
- else:
- cptFalse = cptFalse +1
- print(cptTrue)
- print(cptFalse)
- #un peu meme principe que test()
- def gen_sample():
- while True:
- m = gen_medicament()
- yield est_soigne(m)
- def prog2():
- #nombre d'essai
- N = 10000
- #en gros fait un tableau de true et false en fonction du test effectué
- patients = islice(gen_sample(), N)
- #taux observé de true (somme des true / nombre d'essai)
- #va etre different pour différents runs du programme mais a peu pres similaire
- obs = sum(patients) / N
- #taux calculé avec les formules de stats
- #fixe = 0,9633333333
- th = .98/3 + .96/3 + .95/3
- print(th, obs)
- prog2()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement