Calcul des probabilités
Activités pratiques
Frédéric Blanchard
Sommaire
1 Calcul de la probabilité d’un événement par dénombrement 1 1.1 En bref . . . 1 1.2 Exercices . . . 3
2 Digressions 6
2.1 Dérangement . . . 6 2.2 Générateurs . . . 7 2.3 Pour aller plus loin : généralisation . . . 8
3 Calcul approché : estimation par simulation 8
3.1 En bref . . . 9 3.2 Exercices . . . 10
4 Indépendance 15
4.1 En bref . . . 15 4.2 Exercices . . . 16
5 Conditionnement 16
5.1 Avant propos . . . 16 5.2 En bref . . . 16 5.3 Exercices . . . 17
1 Calcul de la probabilité d’un événement par dénombrement
1.1 En bref
La méthode élémentaire de calcul d’une probabilité d’un événement repose sur le dénom- brement des issues favorables à l’événement, et du nombre d’issues possibles. Elle suppose
également que ces issues sont équiprobables.
En pratique, il s’agira donc simplement d’énumérer toutes les possibilités, et de compter celles qui sont favorables à l’événement étudié.
Exemple :
On s’intéresse à l’expérience aléatoire suivante : « jet de deux dés non pipés ». On veut déterminer la probabilité de l’événementA: « obtenir un double, ou deux entiers consécutifs ».
Nous allons générer, en python toutes les issues possibles de cette expérience aléatoire. Nous allons considérer que le jet de ces deux dés est représenté par un 2-uplet.
# Exemple d'issue des = (2,6)
Première méthode d’énumération : issues = []
for d1 in range(1,7):
for d2 in range(1,7):
issues.append((d1,d2)) print(issues)
## [(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6), (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6), (5, 1), (5, 2), (5, 3), (5, 4), (5, 5), (5, 6), (6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 6)]
Deuxième méthode d’énumération, en utilisant une liste en compréhension : issues = [(d1,d2) for d1 in range(1,7) for d2 in range(1,7)]
print(issues)
## [(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6), (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6), (5, 1), (5, 2), (5, 3), (5, 4), (5, 5), (5, 6), (6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 6)]
Troisième et dernière méthode : le couteau suisseitertools1:
1https://docs.python.org/fr/3/library/itertools.html
import itertools
issues = list(itertools.product([1,2,3,4,5,6],repeat = 2)) print(issues)
## [(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6), (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6), (5, 1), (5, 2), (5, 3), (5, 4), (5, 5), (5, 6), (6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 6)]
Il y a bien 36 issues : print(len(issues))
## 36
Il nous reste maintenant à déterminer, parmi ces issues, celles qui sont favorables à Aet à les compter :
nb_iss_fav = 0
for issue in issues :
if issue[0] == issue[1] or abs(issue[0]-issue[1]) == 1 : nb_iss_fav += 1
print(nb_iss_fav)
## 16
On peut alors calculer la probabilitéP(A) : proba = nb_iss_fav / len(issues) print(proba)
## 0.4444444444444444
1.2 Exercices
1.2.1 4-21
• Déterminer la probabilité d’obtenir une suite en lançant simultanément 3 dés (on pourra utiliser la méthodesorted()).
• Déterminer la probabilité d’obtenir des « fiches » (c’est à dire obtenir deux 1 et une valeur comprise entre 1 et 6)2
2On pourra utiliser la méthodecount()qui permet de compter le nombre d’occurences d’un élément dans un
print(proba_suite())
## 0.1111111111111111 print(proba_fiches())
## 0.07407407407407407
1.2.2 Ouverture au 5000
Pour faire simple, le 5000 est un jeu de dés dont la première phase consiste, pour chaque joueur à jeter 5 dés et à obtenir au moins 350 points. Les5valent 50 points et les1valent cent points.
On souhaite calculer la probabilité, pour un joueur, de passer cette phase d’ouverture. Écrire une fonctionproba_ouverture_5k(mini)qui calcule la probabilité qu’un jet des 5 dés corre- spondent à un total au moins égal àmi ni :
• Initialiser un compteur d’issues favorables à 0
• Pour chaque issue possible, calculer le total de points correspondant, et incrémenter ce compteur lorsque le total dépasse le seuilmi ni.
• Retourner le compteur / nombre d’issues
Remarque presque importante : ces règles sont évidemment simplifiées ; vous êtes invités à aller potasser les règles complètes et à vous entraîner3
Exemple :
print(proba_ouverture_5k(350))
## 0.016203703703703703
print(proba_ouverture_5k(250))
## 0.125
1.2.3 Chapeaux dérangés
Quatre hommes repartent d’un repas au restaurant en prenant un chapeau au hasard (on suppose qu’ils étaient venus chacun avec leur chapeau) parmi les quatre disponibles. Quelle est la probabilité qu’aucun d’entre eux ne reparte avec son chapeau ? (afficher les issues favorables à cet événement).
tuple:(1,2,3,2,2).count(2)retourne3.
3https://fr.wikipedia.org/wiki/5000
Résultat obtenu (les chapeaux sont numérotés de 0 à 3, le numéro du chapeau pris par le premier homme est à l’indice 0, celui de l’homme 1 à l’indice 1 etc.) :
## issues favorables :
## (1, 0, 3, 2)
## (1, 2, 3, 0)
## (1, 3, 0, 2)
## (2, 0, 3, 1)
## (2, 3, 0, 1)
## (2, 3, 1, 0)
## (3, 0, 1, 2)
## (3, 2, 0, 1)
## (3, 2, 1, 0)
## Proba : 0.375
Écrire une fonctionchapeaux(n)qui généralise le calcul ànhommes (etnchapeaux) et retourne la probabilité associée (on pourra utiliseritertools.permutations(), après l’avoir testée).
print(chapeaux(2))
## 0.5
print(chapeaux(3))
## 0.3333333333333333 print(chapeaux(4))
## 0.375
print(chapeaux(5))
## 0.36666666666666664 print(chapeaux(6))
## 0.3680555555555556
Tracer l’évolution de cette probabilité en fonction den: import matplotlib
import matplotlib.pyplot as plt abscisses = range(2,10)
ordonnees = [chapeaux(x) for x in abscisses]
print(ordonnees)
## [0.5, 0.3333333333333333, 0.375, 0.36666666666666664, 0.3680555555555556, 0.3678571428571429, 0.36788194444444444, 0.36787918871252206]
plt.figure()
plt.plot(abscisses,ordonnees) plt.xlabel("n")
plt.ylabel("Probabilité") plt.show()
2 3 4 5 6 7 8 9
n 0.325
0.350 0.375 0.400 0.425 0.450 0.475 0.500
Probabilité
2 Digressions
2.1 Dérangement
Reprenons l’exercice des « chapeaux dérangés ».
On observe une convergence rapide lorsquencroît. Figurez-vous que ce type de permutation
(une permutation dans laquelle aucun élément ne se trouve dans sa position d’origine) s’appelle un dérangement. La probabilité d’observer un dérangement en effectuant une permutation au hasard tend verse−1. Plus d’informations ici
2.2 Générateurs
On s’intéresse ici aux performances de nos programmes python (rien à voir donc avec les probabilités). Nous allons nous intéresser auxgénérateurs.
Testez les instructions suivantes : import time
l1 = itertools.permutations([0,1,2,3,4,5,6,7,8,9])
l2 = list(itertools.permutations([0,1,2,3,4,5,6,7,8,9])) print(sys.getsizeof(l1))
print(sys.getsizeof(l2)) def fun1():
l1 = itertools.permutations([0,1,2,3,4,5,6,7,8,9]) for i in l1 :
None def fun2():
l2 = list(itertools.permutations([0,1,2,3,3,4,5,6,7,8,9])) for i in l2:
None
start_time = time.time() fun1()
print(time.time()-start_time) start_time = time.time() fun2()
print(time.time()-start_time) Dans le même genre :
l1 = [(d1,d2,d3) for d1 in range(6) for d2 in range(6) for d3 in range(6)]
l2 = ((d1,d2,d3) for d1 in range(6) for d2 in range(6) for d3 in range(6)) print(sys.getsizeof(l1))
print(sys.getsizeof(l2))
Comment expliquez-vous les différences observées, et les éventuelsplantagesde jupyterhub ? Vous pouvez m’envoyer votre proposition de réponse par mail : [email protected]
2.3 Pour aller plus loin : généralisation
On l’a vu, calculer une probabilité consiste donc à :
• énumérer toutes les possibilités,
• appliquer une fonction de test sur ces issues (qui teste si une issue est favorable à l’événement étudié),
• compter le nombre de tests positifs,
• retourner le nombre de tests positifs / le nombre de tests effectués
On a aussi vu quepythonmet à disposition le module itertoolsdont plusieurs méthodes permettent de créer desgénérateurs, associés aux outils de dénombrements classiques.
Le calcul d’une probabilité consiste donc àappliquerune fonction sur les élements obtenus par un générateur, puis à agréger les résultats de ces tests pour calculer la proportions de tests qui sont positifs.
Écrire une fonctionproba(gE, tA)qui calcule la probabilité d’un événementAau cours d’une expérience aléatoireEà partir du générateur des issues deE gE, et de la fonctiontAqui carac- térise l’événementA.
Arguments :
• gE:generator
• tA: fonction oulambdaqui retourne un booléen Exemples d’utilisation :
# Probabilité d'avoir un double en lançant deux dés
p = proba(gE = itertools.product([1, 2, 3, 4, 5, 6],[1, 2, 3, 4, 5, 6]), tA = lambda x: x[0] == x[1])
print(p)
## 0.16666666666666666
3 Calcul approché : estimation par simulation
Nous avons vu dans la partie précédente que l’énumération bête et méchante était efficace, et plutôt simple, grâce à l’utilisation de l’outil informatique, et notamment du moduleitertools. Cette approche peut toutefois s’avérer laborieuse, voire impossible, dès lors que l’énumération exhaustive se complique ou que le nombre d’issues est trop grand.
3.1 En bref
Dans toutes ces situations, on pourra alors faire appel à la simulation et à la définitionfréquen- tistede la probabilité. Cette définition repose sur l’intuition suivante : la probabilité qu’un événement a de survenir est la fréquence de survenue de cet événement lorsqu’on répète un très grand nombre de fois, indépendamment, et dans les mêmes conditions l’expérience aléatoire.
Ainsi on a :
P(A)= lim
n→∞
nA n
nAest le nombre de fois oùAest survenu, en répétant l’expériencenfois (avecnsuffisamment grand)
Cette définition est utile lorsqu’on n’a pas équiprobabilité ou que le calcul exact s’avère trop lourd, et lorsqu’on peut reproduire l’expérience autant de fois que l’on veut dans les mêmes conditions.
Ainsi -si on a un doute- on peut lancer 100000 fois un dé pour vérifier que la fréquence d’obtention du 6 s’approche de 16.
On peut reprendre l’exemple de la partie précédente.
Exemple :
On s’intéresse à l’expérience aléatoire suivante : « jet de deux dés non pipés ». On veut déterminer la probabilité de l’événementA: « obtenir un double, ou deux entiers consécutifs ».
Nous allons simuler l’expérience aléatoire sous la forme d’un fonction : import random
def jet2d():
de1 = random.choice([1,2,3,4,5,6]) de2 = random.choice([1,2,3,4,5,6]) return (de1,de2)
realisation = jet2d() print(realisation)
## (5, 3)
La réalisation de l’expérience est-elle favorable à l’événementA? On peut écrire une fonction pour tester la réalisation et répondre à cette question :
def testA(des):
d1 = des[0]
d2 = des[1]
res = (d1 == d2 or d2 == d1 + 1 or d1 == d2+1) return res
resTest = testA(realisation) print(resTest)
## False
On peut alors répéter cette procédure « expérience + test » un grand nombre de fois et calculer la proportion de réalisations favorables àA:
compteur = 0
for i in range(1000):
res = testA(jet2d()) if res == True :
compteur += 1
print("Estimation de la probabilité : {}".format(compteur/1000))
## Estimation de la probabilité : 0.463
3.2 Exercices
3.2.1 Fonction de simulation
Écrire une fonctionsimulationExemple(n)qui répète l’expérience de l’exemplenfois et re- tourne la probabilité estimée.
Exemples d’utilisation :
print(simulationExemple(10))
## 0.4
print(simulationExemple(100))
## 0.43
print(simulationExemple(1000))
## 0.448
print(simulationExemple(10000))
## 0.4427
3.2.2 Convergence
Pour illustrer la convergence de notre simulation, écrire une fonctionconvergence(nmax) (utiliser le code desimulationExemplecomme base) qui estime la probabilité à chaque itéra- tion et retourne la liste des valeurs calculées :
## [0.0, 0.5, 0.6666666666666666, 0.75, 0.6, 0.5, 0.42857142857142855, 0.375, 0.4444444444444444, 0.4]
Tracer l’évolution de l’estimation : N = 1000
x = list(range(1,N+1)) y = convergence(N) plt.figure()
plt.plot(x,y) plt.xlabel("nmax")
plt.ylabel("Probabilité") plt.show()
0 200 400 600 800 1000 nmax
0.0 0.1 0.2 0.3 0.4 0.5 0.6
Probabilité
3.2.3 Chapeaux dérangés
Reprendre l’exercice des chapeaux dérangés et écrire une fonctionchapeauchapeau(n, nrep) qui estime la probabilitépar simulation, cette fois (avecnreprépétitions de l’expérience).
Pour écrire la fonction qui réalise l’expérience, on pourra utiliserrandom.sample()du module random.
import random
print(random.sample([1, 2, 3, 4], 4))
## [2, 4, 1, 3]
Exemple de résultat :
print(chapeauchapeau(6, 10000))
## 0.3702
3.2.4 Jeu de dés
On dispose de quatre dés équilibrés à 120 faces. On les lance.
Quelle est la probabilité d’obtenir :
• un multiple de 21 ou deux multiples de 9 ?
• deux paires ?
3.2.5 « Paradoxe » des anniversaires
On considère un groupe de n personnes (toutes nés lors d’une année non bissextile) et on s’intéresse à leur date anniversaire. Plus précisément on s’intéresse à la probabilité qu’au moins deux d’entre eux aient leur anniversaire le même jour.
On représente chaque jour anniversaire possible par un entier entre 1 et 365 : jours = range(1, 366)
3.2.5.1 Problème On veut déterminer une estimation de la probabilité qu’au moins deux d’entre eux aient leur anniversaire le même jour.
3.2.5.2 Simulation
1. Écrire une fonctiontirage(n)qui génèrendates d’anniversaire.
2. Pour déterminer, par approximation, la probabilité qu’au moins deux dates soient iden- tiques :
1. écrire une fonctiontest(x)qui retourneTruelorsque deux élements sont identiques dans la listex,Falsesinon
2. écrire la fonctionprobA(n,nrep)(ounest le nombre de personnes, et nrep le nom- bre de répétitions de l’expérience) qui effectue le calcul suivant :
• initialisercountà 0
• répéternrepfois :
– experience←tirage(n)
– sitest(experience)retourneTRUEincrémentercount
• retournercount/nrep
3. Lancer la fonctionprobApourn=10 etnr ep=1000 . Quelle est la probabilité que deux personnes au moins aient même jour anniversaire ?
4. Trouver la valeur denà partir de laquelle la probabilité que deux personnes aient même jour anniversaire soit supérieure à 0, 5.
3.2.6 Estimation4deπ
On considère l’expérience aléatoire suivante : on prend aléatoirement un point dans un carré de côté 2 (unités quelconques). On considère alors l’événement « le point est dans le cercle inscrit dans le carré »5.
• Quelle est la probabilité deA?
• Déterminer cette probabilité par simulation.
• En déduire une estimation deπ.
Video d’illustration6 3.2.7 Série noire (Bonus)
En août 2005, cinq catastrophes aériennes majeures ont eu lieu. Cette « série noire » a généré beaucoup d’inquiétudes et de questionnement.7
Nous allons tenter de répondre à la question suivante, par la simulation : « une serie de 5 accidents sur une période de 22 jours peut-elle être le simple fruit du hasard ».
En supposant que les survenues d’accidents sont indépendantes les unes des autres, et que la fréquence de ces accidents est constante, estimez la probabiité de survenue d’une telle série noire.
Indication :on supposera que la probabilité que survienne un accident, un jour donné, est de 0, 1.
3.2.8 Poker (Texas Holdem) (Bonus-bonus)
Le poker est un jeu de cartes (et de jetons) dans lequel chaque joueur essaie de gagner un maximum de jeton en montrant la main la plus forte, ou en faisant croire à ses adversaires qu’il a la main la plus forte.
Dans sa variante « Texas Holdem », la main d’un joueur est constituée de cinq cartes parmi sept :
• deux cartes sont en sa possession et seulement connues du joueur,
• cinq cartes communes à tous les joueurs placées au fur et à mesure de la manche au milieu de la table.
4Cet exemple est une illustration classique des méthodes de Monte Carlo (méthodes d’approximation proba- biliste).
5on rappelle qu’avoirx2+y2≤1 est une condition nécessaire et suffisante pour qu’un point de coordonnées (x,y) soit dans le cercle de centre (0, 0) et de rayon 1.
6Vidéo illustrant l’évolution de l’estimation de pi en fonction du nombre de points générés https://iut-info.univ- reims.fr/users/blanchard/probastat/animapi.mp4
7Inspiré de La loi des séries noires (E. Janvresse et T. de la Rue).
C’est un jeu fascinant où une partie de l’information est connue (les cartes ouvertes placées sur la table) et l’autre inconnue. L’essence de ce jeu réside dans cette information cachée et dans le nombres de jetons que chaque joueur décide de placer dans le pot à chaque tour (pour « informer » les autres joueurs de la main qu’il possède).
Les probabilités jouent un rôle important.
Matthew croit en sa bonne étoile. Il pense obtenir une quinte-flush royale (As-R-D-V-10 de la même couleur), comme Maverick8 9. Cette figure est la plus forte main au poker.
Quelle est la probabilité d’obtenir une telle main ? Écrire une fonctionp_royalflush()qui retourne cette probabilité.
4 Indépendance
4.1 En bref
On dit que deux événementsAetB sont indépendants lorsque :
P(A∩B)=P(A).P(B)
Ainsi pour déterminer si deux v.a. sont indépendantes, on pourra utiliser l’algorithme suivant :
• InitialisercptA,cptBetcptAetBà 0
• Soitnle nombre d’issues
• Pour chaque issue possible
– Si cette issue est favorable àA:
* incrémentercptA
* Si elle est favorable àB :
· incrémentercptBetcptAetB – Sinon, si elle est favorable àB :
* incrémentercptB
• Si(cptA / n) * (cptB / n) == cptAetB / nalors : – retourner VRAI
• Sinon, retourner FAUX
8https://www.youtube.com/watch?v=5h5cwCOWCOg
9Maverick n’est pas le meilleur film traîtant de poker ; on lui en préférera volontiers d’autres ; Dossier Allociné sur le jeu au cinéma
4.2 Exercices
4.2.1 « Indépendance et contexte »10
1. Une urne contient 12 boules numérotées de 1 à 12. On en tire une hasard, et on considère les événements :
• A= « tirage d’un nombre pair »,
• B = « tirage d’un multiple de 3 ».
Les événements A et B sont-ils indépendants ? (pour le savoir déterminerP(A),P(B) etP(A∩B) en examinant toutes les issues)
2. Reprendre la question avec une urne contenant 13 boules.
Remarque :si on souhaite utiliser une approche par simulation, on se heurte à une complication liée à l’approximation ; il est peu probable qu’on ait une égalité.
5 Conditionnement
5.1 Avant propos
Dans les exercices de cette partie, vous aurez besoin d’effectuer des tirages, avec ou sans remise, dans des ensembles. Les fonctionsrandom.sample()etrandom.choice()du modulerandom sont faites pour ça :
import random
print(random.sample([1, 2, 3, 4, 5, 6, 7, 8, 9, 10],5))
## [3, 4, 6, 2, 7]
print(random.choices([1, 2, 3, 4, 5, 6, 7, 8, 9, 10],k=15))
## [8, 3, 3, 2, 7, 7, 7, 4, 4, 2, 9, 3, 1, 2, 10]
5.2 En bref
Il arrive, lorqu’on calcule la probabilité d’un événement A, que l’on dispose d’informations supplémentaires quant à la survenue d’un autre événementB. Cette information supplémentaire peut modifier la probabilité de survenue deAqui nous intéresse.
On notePB(A) cette probabilité (« de A sachant B ») et on a la définition suivante :
10Extrait de [email protected] (vous y trouverez une solution « mathématique », pour vérifier vos résultats)
PB(A)=P(A∩B) P(B) Deux stratégies sont alors possibles :
• ou bien on calcule ces deux probabilités,
• ou bien on restreintΩaux issues favorables àB avant de calculerP(A) dans ce nouvel
« espace ».
Remarque :lorsqueAetB sont indépendants, on a PB(A)=P(A)
5.3 Exercices
5.3.1 Des dés et des sommes des dés
On considère le jeu suivant. On jette quatre dés et on dissimule le résultat. Le joueur doit parier sur le fait qu’il y a au moins deux 6 parmi les valeurs affichées par les dés.
• Écrire une fonction probA(nbsim) qui estime la probabilité que cet événement a de survenir (nbsim)
On sait maintenant que la somme de ces dés vaut 18.
• Écrire une fonctionprobAsachantB(nbsim)qui estime la probabilité qu’il y ait au moins deux 6 sachant que la somme vaut 18.
print(probA(100000))
## 0.13314
print(probAsachantB(100000))
## 0.3787975695554845
5.3.2 Ali Babal11 Le sultan dit à Ali Baba:
« Voici2urnes,4boules blanches et4boules noires. Répartis les boules dans les urnes, mais je rendrai ensuite les urnes indiscernables. Tu auras la vie sauve en tirant une boule blanche.»
11Babal est un jeu mytique sur HP48 ; on estime dans le milieu de la calculette que la HP n’aurait pas connu un tel succès sans ce jeu. Toutefois ça n’a absolument rien à voir avec l’exo.
1. Ali Baba place les 4 boules blanches dans la première urne et les 4 noires dans la seconde.
Écrire une fonction qui simule aléatoirement le choix d’Ali Baba. Répéter cette expérience pour estimer sa probabilité de survie (vous prendrez soin de passer la répartition des boules dans les urnes en paramètres de votre fonction)
2. Quelle est la probabilité de survie avec 2b+2n dans la première urne et 2b+2n dans la seconde ?
3. Déterminer la répartition optimale (qui maximise les chances de survie) (Les réponses exactes sont dans le TD associé)
5.3.3 Bayes aux corneilles Remarque préliminaire :
On pourra utiliser la méthoderandom.choicedenumpy12: import numpy as np
tirage = np.random.choice(['a','b'], 10, replace = True, p=[0.75,0.25]) print(tirage)
## ['b' 'a' 'b' 'a' 'a' 'a' 'a' 'a' 'b' 'a']
Vous venez de passer un test de dépistage de la mathématite13. Cette méchante allergie aux math- ématiques provoque des somnolences en travaux dirigés. Elle est toutefois très rare puisqu’elle ne touche que 0,1% de la population, et on la confond parfois avec de la paresse ou à un syndrôme du vendredi matin.
Votre intervenant de TD vous annonce la mauvaise nouvelle : le test est positif. Animé par un sens critique très développé, vous décidez de vous intéresser à la fiabilité de ce test.
Les laboratoires Coutant-Rouyer qui ont mis au point ce test de dépistage, annoncent les taux de réussite suivants :
« Si vous avez effectivement la mathématite, le test sera positif dans 90% des cas. Si vous ne l’avez pas, il sera négatif dans 97% des cas »
Vous accusez le coup mais décidez tout de même de calculer la probabilité que vous soyez réellement atteint de cette allergie.
Écrire une fonction de simulation qui estime cette probabilité.
12Le premier paramètre désigne l’« urne », le second désigne le nombre de tiages effectués, le troisième,replace, indique si les tirage sont effectués avec ou sans remise, et le dernier,p, précise les probabilités de tirer chaque élément de l’urne (ici, on pioche unaavec proba 0,75 et unbavec proba 0,25)
13En dépit d’un réhabillage de circonstance, cet exercice est extrait de ce billet de « science étonnante »
print(proba_malade(1000000))
## 0.028720117092210114