Modélisez une expérience aléatoire
Autour d’une table de Yams, une question revient souvent : avec trois dés, vaut-il mieux parier sur une somme de 9 ou sur une somme de 10 ? Les deux s’obtiennent de six façons en apparence (9 = 1+2+6 = 1+3+5 = …), et pourtant l’une sort plus souvent que l’autre. Pour trancher sans lancer les dés mille fois, il faut un modèle : une description précise de ce qui peut arriver et de la chance de chaque issue.
Ce chapitre pose ce modèle, qui servira dans tout le cours. Notre fil rouge sera un jeu de dés, parce qu’on peut y vérifier chaque résultat à la main, puis en simulation avec R.
Expérience, univers et événements
Section intitulée « Expérience, univers et événements »Une expérience aléatoire est une expérience dont on connaît toutes les issues possibles, mais dont on ne peut pas prévoir le résultat : lancer un dé, tirer une carte, mesurer le temps de réponse d’un serveur. Le « hasard » n’est pas une propriété mystérieuse du monde, c’est une abstraction commode pour tout ce qu’on ne contrôle pas ou qu’on ne veut pas détailler.
On décrit l’expérience avec trois objets.
- L’univers (on dit aussi ensemble fondamental) est l’ensemble de toutes les issues possibles. Pour un dé, . Pour deux dés discernables (un rouge, un bleu), contient les 36 couples .
- Une issue (ou événement élémentaire) est un élément de : le couple , par exemple.
- Un événement est une partie de , c’est-à-dire un ensemble d’issues. « La somme vaut 7 » est l’événement . On dit qu’il est réalisé si l’issue obtenue lui appartient.
Comme les événements sont des ensembles, on les combine avec les opérations ensemblistes, qui ont toutes une traduction en français courant :
| Notation | Se lit | Réalisé quand… |
|---|---|---|
| A ou B | au moins l’un des deux est réalisé | |
| A et B | les deux sont réalisés | |
| contraire de A | A n’est pas réalisé | |
| A implique B | chaque fois que A est réalisé, B l’est aussi | |
| A et B incompatibles | ils ne peuvent pas se produire ensemble |
L’événement est l’événement certain, et l’ensemble vide l’événement impossible.
Ce qu’on attend d’une probabilité
Section intitulée « Ce qu’on attend d’une probabilité »Une probabilité associe à chaque événement un nombre qui mesure sa chance de se réaliser. Pour que ce nombre se comporte raisonnablement, on lui impose trois règles, les axiomes de Kolmogorov :
- pour tout événement ;
- : il se passe forcément quelque chose ;
- si sont deux à deux incompatibles, (additivité).
Le triplet s’appelle un espace probabilisé. Le symbole désigne la tribu : la collection des événements auxquels on accepte de donner une probabilité. Elle doit contenir , être stable par passage au contraire et par union dénombrable. Pour un dé, on prend toutes les parties de et on n’y pense plus. La tribu ne devient une vraie question que pour les univers continus (un temps, une position), où l’on ne peut pas mesurer raisonnablement toutes les parties de .
De ces trois axiomes découlent toutes les règles de calcul que vous utiliserez :
- et ;
- si , alors ;
- pour deux événements quelconques, .
La dernière formule (dite du crible, ou d’inclusion-exclusion) corrige le double comptage : les issues de ont été comptées une fois dans et une fois dans .
Compter quand tout est équiprobable
Section intitulée « Compter quand tout est équiprobable »Dans beaucoup de situations (dés équilibrés, cartes bien mélangées, tirage au sort), toutes les issues ont la même chance. Si est fini, chacune a alors la probabilité , où est le nombre d’issues, et :
Calculer une probabilité revient alors à compter. C’est le rôle du dénombrement.
Les outils du dénombrement
Section intitulée « Les outils du dénombrement »Le point de départ est le principe multiplicatif : si un choix se fait en deux étapes, avec possibilités pour la première et pour la seconde, il y a possibilités en tout. Deux dés donnent couples, un code PIN à quatre chiffres codes.
Trois situations reviennent sans cesse, selon que l’ordre compte et que les répétitions sont permises :
| Situation | Formule | Exemple |
|---|---|---|
| choix ordonnés, répétitions permises | un code PIN : | |
| choix ordonnés, sans répétition (arrangements) | podium de 3 parmi 10 joueurs : | |
| ranger objets (permutations) | ordre de passage de 5 joueurs : | |
| choix sans ordre ni répétition (combinaisons) | main de 5 cartes parmi 32 : |
Ici (factorielle de ) vaut , avec , et se lit « parmi » (on trouve aussi la notation ).
Le fil rouge : 9 ou 10 avec trois dés ?
Section intitulée « Le fil rouge : 9 ou 10 avec trois dés ? »Revenons à la question du début. Le piège consiste à compter les combinaisons de valeurs : s’écrit , , , , , , et s’écrit aussi de six façons. Mais ces écritures ne sont pas équiprobables ! Pour , les trois dés peuvent se répartir les valeurs de façons ; pour , seulement de 3 façons ; pour , d’une seule.
Travaillons dans le bon univers, celui des triplets ordonnés, tous équiprobables :
- pour 9 : triplets ;
- pour 10 (, , , , , ) : triplets.
Donc et . Pariez sur 10.
De la fréquence à la probabilité : simuler en R
Section intitulée « De la fréquence à la probabilité : simuler en R »Il existe une autre lecture de la probabilité, plus intuitive : si vous répétez l’expérience fois dans les mêmes conditions, la fréquence de l’événement (le nombre de fois où il se réalise, divisé par ) se rapproche de quand grandit. C’est la vision fréquentiste. Elle n’est pas une définition, mais un théorème : la loi des grands nombres, que vous démontrerez au chapitre 7.
Cette vision a une conséquence très pratique : quand un calcul est difficile, on peut simuler l’expérience un grand nombre de fois et mesurer la fréquence. Voici la question des trois dés en R :
set.seed(42) # pour obtenir les mêmes tirages à chaque exécutionN <- 100000# N lancers de trois dés : une matrice de N lignes et 3 colonnesdes <- matrix(sample(1:6, 3 * N, replace = TRUE), ncol = 3)sommes <- rowSums(des)
mean(sommes == 9) # fréquence de la somme 9, proche de 25/216 = 0.116mean(sommes == 10) # fréquence de la somme 10, proche de 27/216 = 0.125L’astuce mean(sommes == 9) est à connaître : la comparaison produit un vecteur de TRUE/FALSE, que R traite comme des 1 et des 0 ; sa moyenne est donc la proportion de TRUE.
R fournit aussi les outils de dénombrement : factorial(5) donne et choose(32, 5) donne . Le célèbre problème des anniversaires (dans un groupe de personnes, quelle est la probabilité que deux d’entre elles soient nées le même jour ?) se calcule par le contraire, en supposant les 365 jours équiprobables :
anniversaire <- function(k) 1 - prod((365 - 0:(k - 1)) / 365)anniversaire(23) # 0.507 : plus d'une chance sur deux dès 23 personnesanniversaire(30) # 0.706Le contraire « toutes les dates sont différentes » compte cas favorables (un arrangement) parmi cas possibles.
En résumé
Section intitulée « En résumé »- Une expérience aléatoire se modélise par un espace probabilisé : univers des issues, tribu des événements, probabilité.
- Les événements se combinent comme des ensembles : union (ou), intersection (et), contraire.
- Les axiomes de Kolmogorov donnent toutes les règles de calcul, dont et .
- En cas d’équiprobabilité, = cas favorables / cas possibles, et l’on compte avec , les arrangements, les permutations et les combinaisons .
- Vérifiez toujours que les cas comptés sont équiprobables (le piège des trois dés).
- La fréquence observée sur de nombreuses répétitions approche la probabilité : c’est ce qui justifie la simulation, par exemple avec
sampleetmeanen R.
Exercices
Section intitulée « Exercices »Exercice · Deux dés
facileOn lance deux dés équilibrés. Calculez la probabilité :
- que la somme vaille 7 ;
- que la somme vaille au moins 10 ;
- que les deux dés affichent des valeurs différentes.
Voir la solution
On travaille dans l’univers des 36 couples ordonnés, tous équiprobables.
- Les couples de somme 7 sont : . C’est la somme la plus probable.
- Somme 10 : 3 couples ; somme 11 : 2 couples ; somme 12 : 1 couple. Donc .
- Par le contraire : les doubles sont les 6 couples , donc .
En code
import numpy as np
# Les 36 couples (rouge, bleu), tous équiprobablesrouge, bleu = np.meshgrid(np.arange(1, 7), np.arange(1, 7))somme = rouge + bleu
print(np.mean(somme == 7)) # 0.1667 (6/36)print(np.mean(somme >= 10)) # 0.1667 (6/36)print(np.mean(rouge != bleu)) # 0.8333 (30/36)# Les 36 couples (rouge, bleu), tous équiprobablescouples <- expand.grid(rouge = 1:6, bleu = 1:6)somme <- couples$rouge + couples$bleu
mean(somme == 7) # 0.1667 (6/36)mean(somme >= 10) # 0.1667 (6/36)mean(couples$rouge != couples$bleu) # 0.8333 (30/36)Exercice · Une main de cartes
moyenOn distribue 5 cartes d’un jeu de 32 cartes (qui contient 4 as). Calculez la probabilité d’avoir exactement deux as, puis celle d’avoir au moins un as.
Voir la solution
L’ordre des cartes dans la main ne compte pas : il y a mains, toutes équiprobables.
Exactement deux as : on choisit 2 as parmi 4, soit façons, puis 3 cartes parmi les 28 qui ne sont pas des as, soit façons. Donc :
Au moins un as : par le contraire, une main sans as choisit ses 5 cartes parmi 28, soit mains. Donc . Un peu plus d’une chance sur deux.
En code
from scipy.special import comb
mains = comb(32, 5, exact=True) # 201376 mains équiprobablesdeux_as = comb(4, 2, exact=True) * comb(28, 3, exact=True)sans_as = comb(28, 5, exact=True)
print(mains, deux_as, sans_as) # 201376 19656 98280print(deux_as / mains) # 0.0976print(1 - sans_as / mains) # 0.5120mains <- choose(32, 5) # 201376 mains équiprobablesdeux_as <- choose(4, 2) * choose(28, 3) # 2 as parmi 4, 3 autres parmi 28sans_as <- choose(28, 5)
c(mains, deux_as, sans_as) # 201376 19656 98280deux_as / mains # 0.09761 - sans_as / mains # 0.5120# Même résultat avec la loi hypergéométrique (chapitre 4)dhyper(2, 4, 28, 5) # 0.0976Exercice · Le pari du chevalier
difficileUn joueur du XVIIe siècle pariait qu’il obtiendrait au moins un six en lançant 4 fois un dé. Il pensait qu’il était tout aussi avantageux de parier sur au moins un double six en lançant 24 fois deux dés (« 6 fois plus de cas, 6 fois plus de lancers »). Calculez les deux probabilités et commentez. Écrivez ensuite une simulation R qui vérifie la seconde.
Voir la solution
Premier pari. Les lancers sont indépendants (nous préciserons ce mot au chapitre 3) et chacun donne « pas de six » avec probabilité . La probabilité de n’avoir aucun six en 4 lancers est , donc :
Second pari. Un lancer de deux dés donne un double six avec probabilité . Donc :
Le premier pari est favorable (plus d’une chance sur deux), le second légèrement défavorable. Le raisonnement « proportionnel » est faux, car les probabilités de « au moins un » ne s’additionnent pas lancer après lancer : les événements ne sont pas incompatibles.
En code
import numpy as np
# Calcul exact par le contraireprint(1 - (5/6)**4) # 0.5177print(1 - (35/36)**24) # 0.4914
# Simulation du second pari : 100 000 parties de 24 lancers de deux désrng = np.random.default_rng(0)d1 = rng.integers(1, 7, size=(100_000, 24))d2 = rng.integers(1, 7, size=(100_000, 24))gagne = np.any((d1 == 6) & (d2 == 6), axis=1) # au moins un double six ?print(gagne.mean()) # 0.4937, proche de 0.491# Calcul exact par le contraire1 - (5/6)^4 # 0.51771 - (35/36)^24 # 0.4914
# Simulation du second pariset.seed(1)un_pari <- function() { d1 <- sample(1:6, 24, replace = TRUE) d2 <- sample(1:6, 24, replace = TRUE) any(d1 == 6 & d2 == 6) # au moins un double six sur les 24 lancers ?}mean(replicate(100000, un_pari())) # 0.4943, proche de 0.491