Vous êtes sur la page 1sur 253

Thierry Alhalel

Introduction
aux probabilités
avec Python
Graphisme de couverture : Elizabeth Riba

Illustration de couverture : © BEST-BACKGROUNDS – Shutterstock.com

L’auteur et les éditions Dunod remercient Jean-Marie Monier, professeur de


mathématiques en classes préparatoires au lycée La Martinière-Monplaisir (Lyon),
pour sa relecture attentive de l’ouvrage.

© Dunod, 2021
11 rue Paul Bert, 92240 Malakoff
www.dunod.com
ISBN 978-2-10-083250-7
Table des matières

1 Les dénombrements 9
1.1 Dénombrements et théorie ensembliste . . . . . . . . . . . . . . . . . . . . . 9
1.2 Permutations, arrangements et combinaisons . . . . . . . . . . . . . . . . . . 10
1.2.1 Permutations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2.2 Arrangements (on tient compte de l’ordre du tirage) . . . . . . . . . 10
1.2.3 Combinaisons (on ne tient pas compte de l’ordre du tirage) . . . . . 11
1.3 Petit résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4 Exercices de dénombrement . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5 Exercices autour de la formule de Stirling . . . . . . . . . . . . . . . . . . . 26

2 Probabilités générales 37
2.1 Description ensembliste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.2 Probabilité d’un événement . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.3 Exercices sur les probabilités générales . . . . . . . . . . . . . . . . . . . . . 41
2.4 Probabilités conditionnelles et théorème de Bayes . . . . . . . . . . . . . . . 49
2.5 Exercices sur les probabilités conditionnelles . . . . . . . . . . . . . . . . . . 51

3 Lois de probabilité discrètes 69


3.1 Variables aléatoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.1.1 Une définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.1.2 Une façon plus axiomatique de voir les choses . . . . . . . . . . . . . 69
3.1.3 Loi de probabilité d’une variable aléatoire discrète . . . . . . . . . . 70
3.1.4 Fonction de répartition . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3.1.5 Caractéristiques d’une variable aléatoire discrète . . . . . . . . . . . 71
3.2 Des exemples de lois discrètes . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3.2.1 La loi uniforme discrète . . . . . . . . . . . . . . . . . . . . . . . . . 71
3.2.2 La loi de Bernoulli B(1, p) . . . . . . . . . . . . . . . . . . . . . . . . 72
3.2.3 La loi binomiale B(n, p) . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.2.4 La loi hypergéométrique H(N, n, p) . . . . . . . . . . . . . . . . . . . 73
3.2.5 La loi géométrique G(p) . . . . . . . . . . . . . . . . . . . . . . . . . 74
3.2.6 La loi de Pascal P a(r, p) . . . . . . . . . . . . . . . . . . . . . . . . 75
3.2.7 La loi de Poisson P (m) . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.2.8 La loi de Zipf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.3 Exercices sur les lois discrètes . . . . . . . . . . . . . . . . . . . . . . . . . . 78

3
4 TABLE DES MATIÈRES

4 Lois de probabilité continues 103


4.1 Variables aléatoires continues . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.1.1 Une définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.1.2 Fonction de répartition . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.1.3 Caractéristiques d’une variable aléatoire continue . . . . . . . . . . . 104
4.1.4 Covariance de deux variables aléatoires . . . . . . . . . . . . . . . . . 104
4.2 Des lois continues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.2.1 La loi uniforme continue . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.2.2 La loi exponentielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
4.2.3 La loi gaussienne ou normale . . . . . . . . . . . . . . . . . . . . . . 107
4.2.4 La loi log-normale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
4.2.5 La loi de Pareto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
4.3 Exercices sur les lois continues . . . . . . . . . . . . . . . . . . . . . . . . . . 112

5 Théorèmes limites 131


5.1 Inégalité de Tchebychev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
5.2 La loi des grands nombres (faible) . . . . . . . . . . . . . . . . . . . . . . . . 132
5.3 Le théorème central limite . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
5.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

6 Moments et fonctions caractéristiques 155


6.1 Distributions jointes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
6.2 Changement de variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
6.3 Convolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
6.4 Moments d’ordre p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
6.5 Fonction génératrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
6.6 Fonction caractéristique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
6.7 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

7 Méthode de Monte-Carlo et calcul intégral 171


7.1 Intégration numérique classique . . . . . . . . . . . . . . . . . . . . . . . . . 171
7.1.1 La méthode des rectangles . . . . . . . . . . . . . . . . . . . . . . . . 171
7.1.2 La méthode des trapèzes . . . . . . . . . . . . . . . . . . . . . . . . 175
7.1.3 Le cas des intégrales multiples . . . . . . . . . . . . . . . . . . . . . . 178
7.2 La méthode de Monte-Carlo . . . . . . . . . . . . . . . . . . . . . . . . . . 179
7.2.1 Première ébauche : une estimation du nombre π . . . . . . . . . . . . 179
7.2.2 Méthode de Monte-Carlo pour le calcul des intégrales . . . . . . . . 181
7.2.3 Méthode de Monte-Carlo avec une distribution générale p(x) . . . . 182
7.3 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

8 Générateurs congruentiels linéaires et hasard 211


8.1 Le hasard en informatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
8.2 Les générateurs congruentiels linéaires . . . . . . . . . . . . . . . . . . . . . 212
8.2.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
8.2.2 Les critères de Knuth . . . . . . . . . . . . . . . . . . . . . . . . . . 213
8.2.3 Des exemples de GCL . . . . . . . . . . . . . . . . . . . . . . . . . . 213
TABLE DES MATIÈRES 5

8.3 Les tests de qualité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214


8.3.1 Le test de la moyenne . . . . . . . . . . . . . . . . . . . . . . . . . . 214
8.3.2 le test du χ2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
8.3.3 Tests spectraux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
8.3.4 Test de Kolmogorov-Smirnov . . . . . . . . . . . . . . . . . . . . . . 217
8.3.5 Les générateurs réellement utilisés en informatique . . . . . . . . . . 219
8.4 Utiliser un générateur uniforme pour obtenir une autre loi . . . . . . . . . . 219
8.4.1 Le cas des lois discrètes . . . . . . . . . . . . . . . . . . . . . . . . . 219
8.4.2 Le cas des lois continues . . . . . . . . . . . . . . . . . . . . . . . . . 220
8.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Introduction générale

Cet ouvrage traite des probabilités au niveau L (licence) et s’adresse aussi bien aux
étudiants de licence que d’IUT ou de BTS. Il regroupe des exercices par thème, comme le
schématise la figure ci-dessous.
Chaque chapitre est constitué de rappels de cours puis d’exercices de difficulté crois-
sante. Certains d’entre eux sont traités avec l’aide de la programmation en langage python3.
Les deux derniers chapitres sont exclusivement construits autour de la thématique python.
Nous supposons que le lecteur est familier de ce langage. Vous trouverez de nombreux
codes python dans le corps du texte. Ils sont aussi accessibles sur le site de Dunod.
Ce livre s’adresse aux étudiants qui veulent se spécialiser en mathématiques ou en
informatique, ainsi qu’à ceux qui s’orientent vers la physique, la chimie, voire la biologie.

Figure 1 – Une organisation possible des chapitres selon les années L1/L2/L3 avec la
dominante probabilités / programmation

7
8 INTRODUCTION

Les programmes ont été développés et testés à la fois sous les environnements linux et
windows 7 :
— avec geany et scite en linux mint,
— avec spyder3 en windows 7.
La simplicité d’usage de python3 permet de sortir des sentiers battus des calculs de pro-
babilité, et de tester des problèmes moins habituels : très grands dénombrements, problème
de Monty Hall, générateurs congruentiels linéaires, méthode de Monte-carlo, en faisant un
large usage des représentations graphiques.
Le lecteur ne trouvera pas de chapitre dédié aux chaînes de Markov, par manque de
place. Cette omission sera peut-être corrigée, dans une future édition, si la présente ren-
contre un large public.
On peut considérer que les chapitres 1, 2 et 3 correspondent plus à un programme de
probabilité de première année, tandis que les suivants peuvent s’étager sur les années 2 et
3 de la licence et du BUT (Bachelor Universitaire de Technologie).
Nous souhaitons bon courage et bonne programmation au lecteur, la probabilité n’est
pas nulle que vous vous amusiez, peut-être autant que l’auteur.
Chapitre 1

Les dénombrements

1.1 Dénombrements et théorie ensembliste


Dénombrer les cas possibles c’est mettre en correspondance l’ensemble E des événe-
ments qui nous intéresse avec une partie de l’ensemble des entiers naturels N. Le cas le plus
simple est lorsque l’ensemble E est fini :
1. On dit que l’ensemble E est fini si on peut le mettre en bijection avec un sous-
ensemble fini de N. Autrement dit, on peut numéroter de 1 jusqu’à n les éléments
distincts de E.
2. Le cardinal de E est son nombre d’éléments n, ce que l’on note |E|.
3. L’ensemble formé de tous les sous-ensembles de E est appelé l’ensemble des parties
de E, ce que l’on note P (E). Par exemple, si E contient deux éléments distincts :
E = {x, y}, l’ensemble des parties de E possède quatre éléments :
P (E) = {{x}, {y}, {x, y}, ∅}
On note ici ∅ l’ensemble vide (c’est-à-dire l’ensemble qui ne contient rien).
4. Si A est une partie de E, son complémentaire A est l’ensemble des éléments de E qui
n’appartiennent pas à A.
Le complémentaire de l’ensemble E tout entier est l’ensemble vide ∅ : E = ∅.
5. La réunion (ou union) de deux ensembles A et B est notée A ∪ B, elle est formée des
éléments qui appartiennent à A ou B.
On dit que ∪ est une loi de composition interne (dans l’ensemble des parties de
E) car si A et B appartiennent à P (E), alors A ∪ B ∈ P (E).
On liste les propriétés suivantes de la loi de composition interne ∪ :
— A ∪ (B ∪ C) = (A ∪ B) ∪ C = A ∪ B ∪ C (propriété d’associativité de la loi)
— A ∪ B = B ∪ A (propriété de commutativité de la loi)
— A ∪ ∅ = ∅ ∪ A = A (∅ est l’élément neutre de la loi)
— A ∪ A = A (∪ est dite idempotente)
6. L’intersection de deux ensembles A et B est notée A ∩ B, elle est formée des éléments
qui appartiennent à A et B en même temps. On peut vérifier que ∩ est aussi une
loi de composition interne pour P (E), et possède des propriétés similaires à l’union.
(Cette fois E est l’élément neutre de la loi de composition interne ∩).

9
10 CHAPITRE 1. LES DÉNOMBREMENTS

7. Une famille finie de parties non vides (Ai ) (avec i = 1, 2, ..., n) d’un ensemble E
réalise une partition de E si et seulement si deux conditions sont remplies :

∀i = j, Ai ∩ Aj = ∅
n

Ai = E
i=1

8. Si E est un ensemble fini comportant n éléments, alors on sait que le cardinal de


l’ensemble des parties P (E) de E est :

|P (E)| = 2n

9. Si une famille finie de parties non vides (Ai ) (avec i = 1, 2, ..., n) d’un ensemble E
est une partition de E, alors on a :
n

|E| = |Ai |
i=1

1.2 Permutations, arrangements et combinaisons


1.2.1 Permutations
On dispose d’un ensemble E contenant n ≥ 1 éléments. On considère un réarrangement
des n éléments (supposés discernables). Ce réarrangement est aussi appelé permutation des
n éléments. Il y a en tout n! = n × (n − 1) × (n − 2)... × 2 × 1 permutations possibles pour
un ensemble de n éléments.
On dit aussi qu’une permutation de l’ensemble E est une bijection de E dans E.
On rappelle aussi que 0! = 1! = 1

1.2.2 Arrangements (on tient compte de l’ordre du tirage)


On dispose d’un ensemble E contenant n ≥ 1 éléments distincts. On choisit p ≤ n
éléments parmi les n éléments et l’ordre dans lequel on les obtient est important. On
considère qu’il n’y a pas de répétition, c’est à dire que le tirage est sans remise.
On appelle arrangement la liste ordonnée obtenue, et le nombre total d’arrangements
distincts est noté Apn .
Lorsqu’on tire le premier élément, il y a n choix possibles, pour le deuxième élément il
y a n − 1 choix possibles et ainsi jusqu’au p-ieme tirage. On a donc la relation :

n!
Apn = n × (n − 1) × (n − 2)... × (n − p + 1) =
(n − p)!

On dit aussi que Apn est le nombre d’injections d’un ensemble à p éléments vers un ensemble
à n éléments.
Remarque : la formule des arrangements se généralise aussi au cas p = 0.
1.2. PERMUTATIONS, ARRANGEMENTS ET COMBINAISONS 11

1.2.3 Combinaisons (on ne tient pas compte de l’ordre du tirage)


On considère un ensemble E contenant n ≥ 1 éléments distincts.
Un sous-ensemble à p éléments (sans répétition, avec p ≤ n) de E est une combinaison
de p éléments de E. Le sous-ensemble des combinaisons est contenu dans l’ensemble des
arrangements du paragraphe précédent, mais on ne tient pas compte de l’ordre des p
éléments. On doit donc diviser le nombre d’arrangements Apn par le nombre de permutation
à p éléments (soit p!) pour obtenir le nombre total de combinaisons noté Cnp .
Le nombre de combinaisons de p éléments pour un ensemble E de n éléments est donc :
Apn n!
Cnp = =
p! p! × (n − p)!
Remarque 1 : on note aussi ce nombre de combinaisons comme (lire p parmi n) :
 
n
Cnp =
p
Remarque 2 : la formule se généralise aussi au cas p = 0.

La symétrie de la formule de définition implique que :


Cnp = Cnn−p
On connaît la relation dite de Pascal :
p p−1
Cnp = Cn−1 + Cn−1
qui permet de construire la figure du triangle de Pascal 1.1.

Figure 1.1 – Triangle de Pascal de la ligne n = 1 à n = 7

En effet Cnp = Cn−1


p p−1
+ Cn−1 montre qu’un élément de la ligne n situé en position de
colonne p est égal à la somme de deux éléments sur la ligne n − 1 du dessus : ceux situés
en position de colonne p − 1 et p. On trouve ainsi que :
C62 = C51 + C52 = 5 + 10 = 15
Notons également la formule du binôme de Newton : pour tout couple de numéros a, b
(réels, complexes, entiers) et pour tout n > 0 entier naturel on a :
n

(a + b)n = Cni × ai × bn−i
i=0
12 CHAPITRE 1. LES DÉNOMBREMENTS

1.3 Petit résumé


Il convient de retenir les points suivants :
1. Le nombre de combinaisons sans ordre (et sans répétition) à p éléments dans un
ensemble à n éléments distincts (avec n ≥ p) est donné par le coefficient binomial :
 
n! n
Cnp = =
p!(n − p)! p
2. Le nombre d’arrangements ( sans répétition, mais où on tient compte de l’ordre
dans le sous-ensemble) à p éléments dans un ensemble à n éléments distincts (avec
n ≥ p) est donné par le coefficient Apn :

n!
Apn =
(n − p)!

3. Le nombre de permutations dans un ensemble à n éléments est :

n! = n × (n − 1) × (n − 2) × ... × 2 × 1

On a posé : 0! = 1
4. On admettra sans la démontrer la formule d’approximation de Stirling, qui permet
d’approcher la valeur de n!, si n est grand :

n! ≈ nn × exp(−n) × 2πn

Cette formule est très importante, car elle permet d’approcher avec un bon degré de
précision le nombre n!

1.4 Exercices de dénombrement


1. Chiffrement par substitution monoalphabétique
Pour coder un message en clair, on peut imaginer de remplacer l’alphabet de 26
lettres usuel par une permutation quelconque. La figure 1.2 donne la répartition
approximative des fréquences des lettres en langue française (pourcentages calculés
sur un nombre fini de mots).
(a) Combien y-a-t-il d’alphabets permutés possibles (on dit aussi de clés possibles) ?
(b) Selon vous, pourquoi n’utilise-t-on plus ce type de clés aujourd’hui ?
(c) Voici une phrase courte codée par substitution. En utilisant la figure 1.2 et un
peu de raisonnement inductif, pouvez-vous déchiffrer le texte suivant :
NIWYMWFIEYIXTEWXSM (pas de blanc entre les mots) ?
Rajoutons une information importante : le code utilisé est une permutation
particulière, par décalage constant (l’alphabet se suit et est juste décalé d’une
quantité à déterminer).
1.4. EXERCICES DE DÉNOMBREMENT 13

Figure 1.2 – Fréquence d’usage des lettres en langue française. On voit que les lettres E
et A sont parmi les plus utilisées.

Solution
(a) Comme notre alphabet contient 26 lettres, il y a

N = 26! = 403 291 461 126 605 635 584 000 000 ≈ 4 × 1027

clés de permutations possibles.


(b) Ce nombre N de clés est grand, mais accessible aux tests par ordinateur. Par
ailleurs, une telle clé conserve la fréquence des lettres qui sont juste permutées
par principe. On peut donc envisager une attaque par fréquences.
(c) On reprend les valeurs les plus importantes des fréquences de la figure 1.2 dans
la figure suivante 1.3.

Figure 1.3 – Fréquences les plus élevées des lettres en langue française et nombre d’oc-
currences de certaines lettres dans le texte codé.

On fait l’hypothèse que les lettres les plus représentées dans le texte codé cor-
respondent aux valeurs du tableau 1.3. Il y a bien sur plusieurs possibilités, en
voici une prometteuse,sur la figure 1.4. En pratique, il faut tester les possibilités
14 CHAPITRE 1. LES DÉNOMBREMENTS

permises par ce tableau,en particulier le fait que le E (en clair) peut sûrement
être le I ou le W, voire le S en code.

Figure 1.4 – Un essai de décodage par fréquence

En tenant compte de l’information supplémentaire, on peut donc supposer que


la lettre E (en clair) correspond au I (en code), ce qui veut dire qu’on à un
décalage de 4 lettres dans l’alphabet, soit la table de correspondance 1.5 :

Figure 1.5 – Une clé par décalage possible

On obtient ainsi le texte décodé 1.6 :

Figure 1.6 – Le texte décodé : JE SUIS BEAU ET PAS TOI

2. Le jeu du 421
On lance trois dés de couleurs différentes à six faces. On regarde les trois sorties.
(a) Calculer le nombre de sorties formant 421.
(b) Calculer le nombre de sorties possédant exactement 1 quatre.
(c) Calculer le nombre de sorties ayant au moins 2 quatre.
(d) Calculer le nombre de sorties ayant au plus 1 quatre.
Solution
(a) Le nombre N cherché est l’ensemble des permutations de 3 éléments 421 sur les
3 dés distincts. Il y a donc N = 3! = 6 possibilités.
(b) Si l’un des dés porte un 4, les deux autres dés ne peuvent porter que les valeurs
possibles : [1, 2, 3, 5, 6].
S’il y a répétition de deux de ces valeurs (par exemple 411), les différentes
combinaisons de couleurs sont au nombre de 3.
S’il n’y a pas répétition de deux de ces valeurs (par exemple 412), les diffé-
rentes combinaisons de couleurs sont au nombre de 6. Il y a par ailleurs C52
combinaisons de 2 des 5 valeurs [1, 2, 3, 5, 6].
le nombre de sorties cherchées est donc de :

N = C51 × 3 + C52 × 6 = 5 × 3 + 10 × 6 = 75
1.4. EXERCICES DE DÉNOMBREMENT 15

(c) Le nombre de sorties avec au moins 2 quatre, signifie que l’on compte les cas
comportant 2 ou 3 quatre. Cela revient à dire que le nombre cherché est :

N = 1 + 3 × 5 = 16

(d) Le nombre de sorties avec au plus 1 quatre signifie qu’on doit additionner les cas
à 0 quatre et 1 quatre (deuxième question). On peut aussi remarquer qu’avoir
au plus 1 quatre est complémentaire d’en avoir au moins 2. Or il y a en tout
63 = 216 possibilités. On en déduit que le nombre cherché est :

N = 63 − 16 = 200

3. Nombre de numéros de téléphone


En France, les numéros de téléphone ont 10 chiffres et commencent par 0. Combien
peut-on former de numéros de portables distincts commençant par 06 ?
Solution
On peut représenter les numéros de téléphones par 10 cases, la première est occupée
par un 0 et la seconde par 6. Les 8 autres peuvent prendre toutes les valeurs dans
l’ensemble des chiffres : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]. Il y a donc en tout N = 108 numéros
possibles.
4. Les octets
Un octet est composé de 8 bits (1 bit est une case prenant la valeur 0 ou 1). Combien
a-t-on d’octets se terminant par 00 ? Combien a-t-on d’octets commençant par 1 ?
par 11 ?
Solution
On peut représenter un octet par huit cases que l’on peut remplir de 0 ou de 1.
— Si l’octet se termine par 00, il reste 6 bits à remplir en listant toutes les combinai-
sons : chacun de ces 6 octets peut prendre 2 valeurs, on a donc un nombre total
d’octets se finissant par 00 :
N = 26 = 64
— Si l’octet commence par 1, il reste 7 bits à remplir en listant toutes les combinai-
sons : chacun de ces 7 octets peut prendre 2 valeurs, on a donc un nombre total
d’octets commençant par 1 :
N = 27 = 128
— Si l’octet commence par 11, il reste 6 bits à remplir en listant toutes les combinai-
sons : chacun de ces 6 octets peut prendre 2 valeurs, on a donc un nombre total
d’octets commençant par 11 :

N = 26 = 64
16 CHAPITRE 1. LES DÉNOMBREMENTS

5. Combien peut-on former de mots différents (anagrammes sans signification) par per-
mutation des lettres du mot MISSISSIPPI ?
Solution
Dans ce mot, les lettres S, I et P apparaissent quatre, quatre et deux fois. On ne peut
donc pas calculer directement le total des permutations sur les 11 lettres du mot. On
va tenir compte des redondances possibles dues aux permutations de SSSS, IIII et
PP. Le nombre de permutations recherché est donc :

11!
N= = 34 650
4! × 4! × 2!

6. Jeu de cartes 1 On dispose d’un jeu de 32 cartes. On distribue une main de cinq
cartes.
(a) Calculer le nombre N de mains possibles comportant exactement trois as.
(b) Calculer le nombre N de mains possibles comportant exactement deux trèfles.
(c) Calculer le nombre N de mains avec le roi de cœur.
(d) Calculer le nombre N de mains avec au moins deux as.
(e) Calculer le nombre N de mains avec au plus un as.
Solution
(a) L’ordre des cartes dans la main ne compte pas, on utilise donc les combinaisons
Cnp pour le calcul. Il y a 4 as et on dispose de 3 d’entre eux. Ce qui autorise C43
combinaisons pour les 3 as. Il reste 2 cartes, à choisir parmi 32 − 4 = 28 cartes.
Cela engendre C282 combinaisons. Voir aussi la figure 1.7. Au total on a :

4! 28! 4 × 28 × 27
N = C43 × C28
2
= × = = 1 512
3!1! 2!26! 1×2

Figure 1.7 – Calcul du nombre de mains à trois as

(b) Dans une main de 5 cartes on a 2 trèfles avec 8 possibilités à trèfle. On calcule
donc le nombre total N de mains possibles :

8! 24! 8 × 7 × 24 × 23 × 22
N = C82 × C24
3
= × = = 56 672
2!6! 3!21! 2×6
C’est ce que l’on retrouve sur la figure 1.8.
1.4. EXERCICES DE DÉNOMBREMENT 17

Figure 1.8 – Calcul du nombre de mains à deux trèfles

(c) Dans une main de 5 cartes on a le roi de cœur, ce qui réduit à 31 possibilités
4 . On calcule donc le nombre total N de mains
les 4 cartes restantes, soit : C31
possibles :
31! 31 × 30 × 29 × 28
4
N = C11 × C31 =1× = = 31 465
4!27! 24
(d) Avoir au moins deux as signifie que la main en contient deux ou plus. Autrement
dit, on doit exclure les deux cas où on a 0 ou 1 as. Par complémentarité le nombre
de mains N recherché est donc :
5
N = C32 − C40 × C28
5
− C41 × C28
4
= 201 376 − 98 280 − 81 900

On trouve donc
N = 21 196
(e) Avoir au plus un as signifie que la main en contient 0 ou 1. C’est le complémen-
taire de la question précédente. Autrement dit, le nombre de mains N est :

N = 201 376 − 21 196 = 180 180

7. Jeu de cartes 2 On dispose d’un jeu de 52 cartes. On distribue une main de six
cartes.
(a) Calculer le nombre N de mains possibles comportant exactement trois as.
(b) Calculer le nombre N de mains possibles comportant exactement deux trèfles.
(c) Calculer le nombre N de mains avec le roi de cœur.
(d) Calculer le nombre N de mains avec au moins deux as.
(e) Calculer le nombre N de mains avec au plus deux as.
Solution
(a) L’ordre des cartes dans la main ne compte pas, on utilise donc les combinaisons
Cnp pour le calcul. Il y a 4 as et on dispose de 3 d’entre eux. Ce qui autorise C43
combinaisons pour les 3 as. Il reste 3 cartes, à choisir parmi 52 − 4 = 48 cartes.
Cela engendre C483 combinaisons. Au total on a donc :

4! 48! 4 × 48 × 47 × 46
N = C43 × C48
3
= × = = 69 184
3!1! 3!45! 1×2×3
18 CHAPITRE 1. LES DÉNOMBREMENTS

(b) Dans une main de 6 cartes on a 2 trèfles avec 13 possibilités à trèfle. On calcule
donc le nombre total N de mains possibles :

2 4 13! 39! 13 × 12 × 39 × 38 × 37 × 36
N = C13 × C39 = × = = 6 415 578
2!11! 4!35! 2 × 24
(c) Dans une main de 6 cartes on a le roi de cœur, ce qui réduit à 51 possibilités
les 5 cartes restantes, soit : C51
5 . On calcule donc le nombre total N de mains

possibles :
51! 51 × 50 × 49 × 48 × 47
N = C11 × C51
5
=1× = = 2 349 060
5!46! 120
(d) Avoir au moins deux as signifie que la main en contient deux ou plus. Autrement
dit, on doit exclure les deux cas où on a 0 ou 1 as. Par complémentarité le nombre
de mains N recherché est donc :
6
N = C52 − C40 × C48
6
− C41 × C48
5
= 20 358 520 − 12 271 512 − 6 849 216

On trouve donc
N = 1 237 792
(e) Avoir au plus deux as signifie que la main en contient 0, 1 ou 2. Autrement dit,
le nombre de mains N est la somme de trois termes :

N = N0 + N1 + N2 = C40 × C48
6
+ C41 × C48
5
+ C42 × C48
4

N = 12 271 512 + 6 849 216 + 1 167 480 = 20 288 208


8. Un jeu de boules noires et blanches
On dispose dans une urne de 10 boules noires et 20 boules blanches. On tire aléatoire-
ment et simultanément 4 boules parmi les 30 (sans distinction de couleurs). Chaque
boule, à l’intérieur de l’urne, a la même chance d’être tirée que toutes les autres.
(a) Combien y-a-t-il de tirages de 4 boules possibles ?
(b) Combien y-a-t-il de tirages possibles comportant 4 boules blanches ?
(c) Combien y-a-t-il de tirages possibles comportant 4 boules noires ?
(d) Combien y-a-t-il de tirages possibles comportant 2 boules blanches et 2 boules
noires ?
Solution
(a) On dispose en tout de N = 10 + 20 = 30 boules dont M = 10 noires et
N − M = 20 blanches. On tire n = 4 boules et on calcule le nombre total de
tirages possibles :
n 4
CN = C30 = 27 405
(b) Le nombre de tirages possibles à 4 boules blanches pour un total de 4 boules
tirées est forcément de :
4 20! 20 × 19 × 18 × 17
C20 = = = 4 845
4! × 16! 24
1.4. EXERCICES DE DÉNOMBREMENT 19

(c) Le nombre de tirages possibles à 4 boules noires pour un total de 4 boules tirées
est forcément de :

4 10! 10 × 9 × 8 × 7
C10 = = = 210
4! × 6! 24

(d) Le nombre de tirages possibles à 2 boules noires (et donc 2 blanches) pour un
total de 4 boules tirées est de :

2 2 10! 20!
C10 × C20 = × = 8 550
2! × 8! 18! × 2!

9. Compétition sportive
Une course a lieu entre N = 10 candidats. Il y a 3 marches sur le podium (et trois
médailles : or, argent et bronze). Combien y a-t-il de possibilités pour la remise des
trois médailles sur le podium ?
Solution
Il s’agit clairement d’un problème d’arrangements cette fois, car l’ordre de tirage (ou
d’arrivée) influe sur le type de médaille gagnée et il ne peut y avoir de répétitions.
Le nombre de possibilités est donc :
10!
N = 10 × 9 × 8 = = A310 = 720
7!
10. Nombres entiers de taille donnée
On veut étudier les nombres de quatre chiffres, que l’on écrit en base 10.
(a) Combien y-a-t-il de tels nombres à quatre chiffres (écrits en base 10) ?
(b) Combien y-a-t-il de nombres à quatre chiffres tous distincts ?
(c) Combien y-a-t-il de nombres à quatre chiffres avec au moins deux chiffres iden-
tiques ?
(d) Combien y-a-t-il de nombres à quatre chiffres comportant trois chiffres iden-
tiques ?
Solution
(a) Le premier de ces nombres est 1 000 et le dernier 9 999. Il y a donc en tout
9 000 nombres à 4 chiffres.
(b) Le premier chiffre (de gauche) prend forcément ses valeurs dans l’ensemble :
[1, 2, 3, 4, 5, 6, 7, 8, 9], ce qui engendre 9 possibilités. Les autres chiffres (les moins
significatifs) peuvent prendre la valeur 0 également, ce que le premier ne pouvait
faire. Le nombre total de nombres à 4 chiffres tous distincts est donc de :

N = 9 × A39 = 9 × 9 × 8 × 7 = 4 536

(c) On remarque que les nombres à au moins deux chiffres identiques sont
complémentaires de ceux à quatre chiffres distincts. Le nombre de tels nombres
est donc :
N = 9 000 − 4 536 = 4 464
20 CHAPITRE 1. LES DÉNOMBREMENTS

(d) On peut séparer les nombres (à quatre chiffres) avec 3 chiffres identiques en
deux catégories :
— ceux dont le chiffre de gauche (le plus significatif) est différent des trois
autres : cela engendre 9 × 9 = 81 possibilités.
— ceux dont le chiffre de gauche est égal à deux des trois autres chiffres situés
à droite : cela engendre 9 × 9 × 3 = 243 possibilités.
Le nombre de nombres à 4 chiffres à 3 chiffres identiques est donc de

81 + 243 = 324

11. Jeu de Loto


Au jeu de Loto il y a 49 numéros possibles de 1 à 49. On doit (on devait..) choisir 6
numéros parmi ces 49 possibilités.
(a) Combien y-a-t-il de grilles différentes (sans ordre) possibles ?
(b) Combien y-a-t-il de grilles différentes (sans ordre) possibles contenant le numéro
18 ?
(c) Combien y-a-t-il de grilles sans aucun numéros consécutifs (sans ordre) pos-
sibles ?
(d) Combien y-a-t-il de grilles avec au moins 2 numéros consécutifs (sans ordre)
possibles ?
(e) Construire un programme python qui teste la probabilité d’avoir un tirage de 6
numéros sur 49 (sans remise) avec au moins deux valeurs consécutives.
On pourra aussi chercher à représenter sur un total fixé de tirages le nombre de
tirages avec un ou plusieurs couples de numéros consécutifs. On pourra calculer
la probabilité d’avoir au moins deux numéros consécutifs comme :
nombre tirages avec numeros consecutifs
P =
nombre total tirages

Figure 1.9 – Jeu de loto : 6 numéros tirés sur 49. En haut, le cas générique où on n’a pas
de numéros consécutifs. Les croix sont toutes séparées par des ronds. En bas, cas où on
a deux numéros consécutifs. Les numéros tirés sont représentés par des croix, il y a deux
croix cote à cote.
1.4. EXERCICES DE DÉNOMBREMENT 21

Solution
49!
(a) Le nombre de grilles différentes est N = C49
6 = = 13 983 816.
6! × 43!
(b) Si le numéro 18 est fixé, le nombre de grilles possibles est donc

5 48!
N = C48 = = 1 712 304
5! × 43!
(c) Si la grille tirée n’a pas de numéros consécutifs, on peut représenter cette confi-
guration générale en marquant d’une croix un numéro tiré et en marquant d’un
rond un numéro (ou des numéros !) non tiré(s) comme sur la figure 1.9.
Dans le cas où on n’a pas de numéros consécutifs, les 6 numéros tirés sont séparés
par 5 ronds intérieurs (qui peuvent représenter 1 numéro ou plus). En raisonnant
avec des boites, on met donc 5 numéros dans les 5 boites intérieures séparant
les croix. Un fois ces 5+6 = 11 numéros tirés, il reste 49-11 = 38 numéros à
répartir dans les 7 (5 intérieures + 2 extérieures) boites séparant les croix. Si
on ne veut que des numéros non consécutifs, il y a 44 choix possibles (de façon
à se réserver les 5 ronds intérieurs). Le nombre de possibilités (sans numéros
consécutifs) est alors de :
44!
N= = 7 059 052
6! × 38!
(d) Dans le cas où on a au moins deux numéros consécutifs dans le tirage, il
s’agit du complémentaire de la question précédente :
6
N = C49 − 7 059 052 = 6 924 764

(e) Le programme ci-dessous permet de calculer la probabilité d’avoir un tirage avec


au moins deux numéros consécutifs (c’est-à-dire au moins un couple de numéros
consécutifs).
Il affiche aussi sur la figure 1.10 le nombre de couples consécutifs obtenu à chaque
tirage :
— Ce peut être 0 couple (pas de numéros consécutifs),
— Ce peut être 1 couple (soit 2 numéros consécutifs),
— Ce peut être 2 couples, ce qui peut représenter 3 numéros qui se suivent
(1 2 3 par exemple) mais ce qui peut donner aussi 2 couples disjoints
(1 2 et 45 46 par exemple)
— ...et jusqu’à 5 couples.
La figure 1.10 présente 142 tirages (numérotés en abscisse )de 6 numéros de 1 à
49.
On a obtenu une fois 3 couples de numéros consécutifs dans nos tirages aléatoires
(lu en ordonnée sur la figure 1.10).
Dans notre cas, il s’agit du tirage : 19 40 41 46 47 48, soit 3 couples.
1 #importation des librairies
2 import matplotlib.pyplot as plt
3 import math
22 CHAPITRE 1. LES DÉNOMBREMENTS

4 import random
5 def identique(): #compte le nb de valeurs identiques (dans tirage )
6 iden =0
7 for i in range(0,N-1):
8 a=tirage[i]
9 b=tirage[i+1]
10 if (b-a==0):
11 iden=iden+1
12 return iden
13 def consecutif() : #compte le nb de couples consecutifs (dans tirage )
14 sortie =0
15 for i in range(0,N-1):
16 a=tirage[i]
17 b=tirage[i+1]
18 if (b-a==1):
19 sortie=sortie+1
20 return sortie
21 # initialisation
22 compteur=0
23 consecut=0
24 total = 200
25 N=6
26 n=[]
27 tirage=[]
28 aumoinsdeux=[]
29 #boucle et test sur les consecutifs
30 for ii in range(0,total+1):
31 for j in range(1,N+1):
32 QQ=random.randint(1,49) #tirage uniforme entre 1 et 49
33 tirage.append(QQ)
34 tirage.sort() #ordonne la liste par ordre croissant
35 if (identique()==0):
36 aumoinsdeux.append(consecutif())
37 compteur=compteur+1
38 n.append(compteur)
39 if(consecutif()>=2):
40 print(’affichage tirage avec’,consecutif(),’
consecutifs ’,tirage)
41 tirage[:]=[] #on vide la liste
42 print(aumoinsdeux)
43 for i in range(0,len(aumoinsdeux)):
44 if(aumoinsdeux[i]>0):
45 consecut=consecut+1
46 print("proba avec valeurs consecutives : ",consecut/len(n))
47 #affichage graphique
48 plt.figure()
49 plt.plot(n,aumoinsdeux,color=’red’,label=’nb valeurs consecutives’)
50 plt.plot(n,aumoinsdeux,’k+’)
51 plt.xlabel(’entier n’)
52 plt.ylabel(’numeros consecutifs’)
53 plt.title(’tirage du loto : 6 sur 49 ’)
1.4. EXERCICES DE DÉNOMBREMENT 23

54 plt.grid(True)
55 plt.legend()
56 #sauvegarde de l image
57 plt.savefig("loto.png")
58 plt.show()
Le programme ci-dessus appelle quelques commentaires :
— la variable total représente le nombre total de tentatives de tirages que nous
faisons. Cependant le nombre de tirages réels sera inférieur ou égal à ce
nombre, car nous utilisons la fonction randint() qui tire au hasard (de façon
uniforme et avec remise) un entier ici compris entre 1 et 49. Cela implique
que certains essais peuvent comporter plusieurs fois le même nombre, ce qui
ne peut représenter un tirage du loto sans remise.
— Le rôle de la fonction identique() est justement de vérifier s’il y a dans la
liste tirage des numéros identiques. Si c’est le cas, le tirage est rejeté.
— Le rôle de la fonction consecutif() est de compter dans un tirage (sans
répétition de numéros) le nombre de couples d’entiers consécutifs. Le retour
de cette fonction est un entier qui peut prendre les valeurs de 0 à 5 (6 numéros
successifs dans ce dernier cas).
— La liste aumoinsdeux contient une liste d’entiers de 0 à 5, chaque valeur
représentant le nombre de couples consécutifs d’un tirage donné. Le nombre
de valeurs de cette liste est donc le nombre total de tirages retenus.

Figure 1.10 – Nombre de couples de numéros consécutifs (éventuellement disjoints) pour


chaque tirage de loto. On remarque que sur 142 tirages, un seul comporte trois couples de
numéros consécutifs.

Le résultat de l’exécution ci-dessous montre les tirages avec au moins deux


couples d’entiers consécutifs, la liste aumoinsdeux, puis la valeur de la proba-
bilité d’obtenir au moins deux numéros consécutifs dans un tirage.
24 CHAPITRE 1. LES DÉNOMBREMENTS

1 >python3 -u "loto.py"
2 affichage tirage avec 3 consecutifs [19, 40, 41, 46, 47, 48]
3 affichage tirage avec 2 consecutifs [5, 9, 33, 44, 45, 46]
4 affichage tirage avec 2 consecutifs [1, 2, 19, 21, 42, 43]
5 affichage tirage avec 2 consecutifs [10, 11, 15, 17, 23, 24]
6 affichage tirage avec 2 consecutifs [7, 10, 23, 24, 25, 38]
7 affichage tirage avec 2 consecutifs [10, 19, 20, 30, 31, 35]
8 affichage tirage avec 2 consecutifs [5, 15, 16, 17, 31, 49]
9 affichage tirage avec 2 consecutifs [7, 8, 17, 36, 37, 48]
10 affichage tirage avec 2 consecutifs [3, 4, 31, 34, 35, 46]
11 affichage tirage avec 2 consecutifs [8, 9, 13, 27, 28, 45]
12 affichage tirage avec 2 consecutifs [2, 3, 6, 7, 23, 34]
13 affichage tirage avec 2 consecutifs [6, 16, 17, 19, 28, 29]
14 affichage tirage avec 2 consecutifs [5, 7, 8, 9, 38, 45]
15 affichage tirage avec 2 consecutifs [23, 34, 35, 36, 41, 47]
16 affichage tirage avec 2 consecutifs [13, 16, 17, 27, 28, 45]
17 [1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 2, 0, 1, 0,
1, 1, 0, 2, 1, 0, 0, 0, 1, 2, 1, 1, 1, 1, 1, 1, 0, 1, 2, 0, 1, 0,
0, 0, 1, 2, 1, 0, 0, 0, 1, 1, 1, 2, 0, 1, 0, 2, 1, 0, 0, 1, 0, 1,
0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 2, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0,
0, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0,
2, 1, 0, 2, 0, 0, 0, 2, 0, 1, 1, 0, 0, 1, 1, 0, 2, 0, 1, 1, 0, 1,
0, 0, 0, 0, 0, 1, 1, 1, 2, 0]
18 proba avec valeurs consecutives : 0.5034965034965035

On relance le programme précédent légèrement transformé, avec 2 000 000 de


tentatives de tirages. On obtient ici 1 455 219 tirages satisfaisants (sans double),
et dans notre cas nous obtenons 720 934 tirages avec au moins un couple de
numéros successifs. On affiche ci-dessous les quelques cas comportant 5 couples
consécutifs, il y en a eu 12 sur le total de nos essais.
La probabilité d’avoir un tirage avec au moins un couple de nombre consécutifs
est estimée dans cet essai à
720 934
P = ≈ 0, 4954
1 455 219

1 >python3 -u "lotoBis.py"
2 affichage tirage avec 5 consecutifs [9, 10, 11, 12, 13, 14]
3 affichage tirage avec 5 consecutifs [11, 12, 13, 14, 15, 16]
4 affichage tirage avec 5 consecutifs [12, 13, 14, 15, 16, 17]
5 affichage tirage avec 5 consecutifs [32, 33, 34, 35, 36, 37]
6 affichage tirage avec 5 consecutifs [25, 26, 27, 28, 29, 30]
7 affichage tirage avec 5 consecutifs [16, 17, 18, 19, 20, 21]
8 affichage tirage avec 5 consecutifs [18, 19, 20, 21, 22, 23]
9 affichage tirage avec 5 consecutifs [5, 6, 7, 8, 9, 10]
10 affichage tirage avec 5 consecutifs [30, 31, 32, 33, 34, 35]
11 affichage tirage avec 5 consecutifs [30, 31, 32, 33, 34, 35]
12 affichage tirage avec 5 consecutifs [44, 45, 46, 47, 48, 49]
13 affichage tirage avec 5 consecutifs [27, 28, 29, 30, 31, 32]
14 liste pour les couples consecutifs [564594, 141914, 13910, 504, 12]
15 sur 2000000 tentatives, il y a 1455219 tirages sans repetition
1.4. EXERCICES DE DÉNOMBREMENT 25

16 sur 1455219 tirages, il y a 720934 tirages avec au moins 1 doublet


consecutif
17 la proba d avoir au moins deux numeros consecutifs est :
0.49541271794829506

la figure 1.11 résume les résultats précédents sous forme d’histogrammes.

Figure 1.11 – Histogrammes donnant le nombre de fois où on obtient 1, 2, 3, 4 ou 5


couples de numéros se suivant. En haut de 1 à 5 couples, en bas 4 ou 5 couples. Les valeurs
représentées sont : [564 594, 141 914, 13 910, 504, 12]
26 CHAPITRE 1. LES DÉNOMBREMENTS

1.5 Exercices autour de la formule de Stirling


1. La formule de Stirling
(a) En utilisant la formule de Stirling et la formule générale de la factorielle, calculer
le % relatif d’écart entre les deux valeurs, si n = 5 puis n = 10.
(b) En écrivant un programme Python, afficher le % d’écart relatif entre la formule
de Stirling et la factorielle n!, pour n variant de 1 à 10
(c) Adapter le programme précédent pour afficher la différence avec n variant entre
10 et 50.
(d) A partir de quelle valeur de n cette différence est-elle inférieure à 0,1 % ?
Solution
(a) Le calcul direct montre que :

5! = 1 × 2 × 3 × 4 × 5 = 120

La formule de Stirling donne quant à elle :



5! ≈ 55 × exp(−5) × 2π × 5 ≈ 118, 01916

Le pourcentage d’écart entre ces 2 valeurs est pour n = 5 d’environ 1,65 %.


De même, le calcul direct montre que :

10! = 1 × 2 × 3 × 4... × 10 = 3 628 800

La formule de Stirling donne quant à elle :



10! ≈ 1010 × exp(−10) × 2π × 10 ≈ 3 598 695,618 7

Le pourcentage d’écart entre ces 2 valeurs est pour n = 10 d’environ 0,829 6 %.


(b) On utilise le code Python suivant, qui permet de comparer le calcul direct de la
factorielle à l’approximation de Stirling :
1 #importation des librairies
2 import matplotlib.pyplot as plt
3 import math
4 #fonctions factorielle et formule de Stirling
5 def factorielle(p) :
6 facto = 1
7 for j in range(1,p+1):
8 facto = facto * j
9 return facto
10
11 def stirling(n) :
12 facto = (2*math.pi*n)**(0.5)*n**n*math.exp(-n)
13 return facto
14 # initialisation des listes et parametres
15 N=100
16 n=[]
1.5. EXERCICES AUTOUR DE LA FORMULE DE STIRLING 27

17 diff=[]
18 #calcul de la difference diff
19 for i in range(1,N+1):
20 difference=100*(factorielle(i)-stirling(i))/factorielle(i)
21 diff.append(difference)
22 n.append(i)
23
24 print(’la liste contient : ’,len(n), ’ elements’)
25 #affichage du contenu de la liste diff
26 print( "les pourcentages sont : ", diff)
27 #affichage des 3 histogrammes
28 plt.figure()
29 plt.subplot(311)
30 plt.bar(n,diff,color=’red’,width = 0.6)
31 plt.xlim(0,10)
32 plt.ylabel(’en pour cent ’)
33 plt.title(’comparaison factorielle / formule de Stirling en %’)
34 plt.grid(True)
35 plt.subplot(312)
36 plt.bar(n,diff,color=’red’,width = 0.6)
37 plt.xlim(10,50)
38 plt.ylim(0,1)
39 plt.xlabel(’entier n’)
40 plt.ylabel(’en pour cent ’)
41 plt.grid(True)
42 plt.subplot(313)
43 plt.bar(n,diff,color=’red’,width = 0.6)
44 plt.xlim(80,90)
45 plt.ylim(0,0.2)
46 plt.xlabel(’entier n’)
47 plt.ylabel(’en pour cent ’)
48 plt.grid(True)
49 #sauvegarde de l image
50 plt.savefig("stir1.png")
51 plt.show()

Le langage Python possède une fonction factorielle interne, nous avons préféré
ici la calculer directement avec une boucle FOR. Le tableau diff contient les N
pourcentages successifs demandés, qui sont affichés en haut de la figure 1.12.
(c) Le graphe demandé se trouve au milieu de la figure 1.12.
(d) Le graphe demandé se trouve en bas de la figure 1.12. On voit qu’à partir de
n = 84 on passe sous la valeur de 0,1 %.
28 CHAPITRE 1. LES DÉNOMBREMENTS

Figure 1.12 – Comparaison calcul direct / formule de Stirling en %

2. Quelques propriétés du coefficient du binôme Cnp


(a) En utilisant la formule du binôme de Newton
n
 n

(a + b)n = Cni × ai × bn−i = Cni × bi × an−i
i=0 i=0

déterminer, pour tout n ≥ 1, la valeur de la somme


n

Cni
i=0

(b) En écrivant un triangle de Pascal, retrouver la valeur de C10


5 .

(c) Déterminer la valeur, pour tout n ≥ 1 de :


n

(−1)i × Cni
i=0

(d) Déterminer la valeur, pour tout n ≥ 1 de :


n

2i × Cni
i=0
1.5. EXERCICES AUTOUR DE LA FORMULE DE STIRLING 29

Solution
(a) On choisit a = b = 1 et on trouve naturellement :
n

2n = Cni = Cn0 + Cn1 + ... + Cnn
i=0

On retouve ce résultat dans la colonne (somme) de droite de la figure 1.13.


(b) Si on reprend la figure 1.1 pour pousser le triangle jusqu’à la ligne 10, on obtient
la figure 1.13. On obtient en définitive C10
5 = 252 ce que l’on peut aussi obtenir

par un calcul direct :

5 10! 10 × 9 × 8 × 7 × 6
C10 = = = 252
5!5! 120

Figure 1.13 – Triangle de Pascal pour n = 10

(c) On choisit maintenant a = 1 et b = −1 :


n

0= (−1)i × Cni = Cn0 − Cn1 + ... + (−1)n × Cnn
i=0

(d) On choisit maintenant a = 1 et b = 2 :


n

3n = 2i × Cni = Cn0 + 2 × Cn1 + ... + 2n × Cnn
i=0

n/2
3. Combien de chiffres pour Cn si n est pair et grand ?
(a) Démontrer la double inégalité, pour tout n pair

2n
< Cnn/2 < 2n
n+1
n/2
(b) En utilisant le logarithme décimal, encadrer la valeur de log10 (Cn )
(c) Encadrer le nombre de chiffres de C1000
500 .

n/2
(d) Trouver la valeur de n minimale pour que Cn possède au moins 1000 chiffres.
30 CHAPITRE 1. LES DÉNOMBREMENTS

(e) Construire un programme Python qui permet de représenter le nombre de


n/2
chiffres N de l’entier Cn . On pourra utiliser une échelle logarithmique (n et
N en échelle logarithmique), en allant jusqu’à une valeur de N de l’ordre de
100 000.
Solution
(a) On sait que la somme des n + 1 coefficients du binôme pour n donné vaut :

n

2n = Cnp
p=0

n/2
Par ailleurs,si n est pair, Cn est le plus grand terme de toute la somme précé-
dente (il se situe exactement au milieu de la ligne n du triangle de Pascal). On
peut donc dire que :
n/2
— Le coefficient Cn est forcément plus petit que 2n .
n/2 2n
— Le coefficient Cn est forcément plus grand que (la valeur moyenne
n+1
de la somme de tous les termes).
On obtient dont la double inégalité :

2n
< Cnn/2 < 2n
n+1

(b) On peut prendre le logarithme décimal de cette double inégalité :

n × log(2) − log(n + 1) < log(Cnn/2 ) < n × log(2)

(c) Si n = 1000, on obtient :


500
298, 02956 < log(C1000 ) < 301, 029995

On déduit donc que C1000


500 est un entier possédant entre 298 et 301 chiffres. Don-
500 (obtenue directement en Python
nons pour le plaisir la valeur exacte de C1000
3 grâce à l’instruction print(math.comb(1000,500))) :

2702882409454365695156146936259752754961520084465482870073928751066254
2870552219389861248392450237016536260608502154610480220975005067991754
9894219699518475423665484263751733356162464079737887344364574161119497
6045710449857562878805146009942194267523669158566031368626024844281092
96905863799821216320

Il s’agit d’un nombre à 300 chiffres.


n/2
(d) On cherche la valeur de n minimale telle que Cn possède au moins 1 000
chiffres, un petit calcul test permet de vérifier que
1667
log(C3334 ) > 1 000,110 9
1.5. EXERCICES AUTOUR DE LA FORMULE DE STIRLING 31

1667 (obtenu
La valeur limite recherchée est donc n = 3334. Voici ce nombre C3334
en Python 3 grâce à l’instruction print(math.comb(3334,1667))) :

5948811968824958127554048838217431497779841980308529778571226443381808
4662018274572892085892694410226942543538161941893556058268717471393203
9895491717024774676278830212824469543740347277639225038978312422325989
1129233913445593245815176278715006761438547286808058534057379155556450
4435508944295278255868469145726906685219235485845494648701773109283208
3578593226421892162371031658570236832567012586320316151369488409670705
5165708102814281531025967814618252093527279203496548534666038667007850
0073098667822333958402233314736147523226588961861981004696164049887307
4731249355802379579173102767913693112563590781927469172792457029271099
3998952026457690046533147617133825112830064852734532219359685540848462
8726747815317102389395406853543575436280181778700114717482944118465682
8857277537645451802505759284539376977109079723093893213140052819891003
1250917085372009808517199556448844878473763360373661735124610396933527
9568558437787580927966196710222627326157620675447820450115892512270535
9382060407603752292000

(e) Le programme suivant remplit les deux tableaux Nlimite1 et Nlimite2 de n = 1


jusqu’à n = 100 000 en utilisant la double inégalité vue précédemment, dans
la question b. Le tableau Nlimite1 représente les valeurs inférieures du nombre
n/2
de chiffres significatifs N de Cn , tandis que Nlimite2 représente les valeurs
supérieures. Pour tout n, le nombre de chiffres N est encadré par les 2 courbes
limites. Elles convergent rapidement l’une vers l’autre. On retrouve que pour
n ≈ 3 000 le nombre de chiffres significatifs est de 1 000. L’affichage se fait avec
une échelle logarithmique, sur la figure 1.14.
1 #importation des librairies
2 import matplotlib.pyplot as plt
3 import math
4 #fonctions limites inf et limite sup
5 def Ninferieur(p) :
6 Ninf = p*math.log(2,10)-math.log(p+1,10)
7 return Ninf
8
9 def Nsuperieur(p) :
10 Nsup = p*math.log(2,10)
11 return Nsup
12 # initialisation des listes et parametres
13 N=100000
14 n=[]
15 Nlimite1=[]
16 Nlimite2=[]
17 #remplissage des deux tableaux inf et sup
18 for i in range(1,N+1):
19 Nlimite1.append(Ninferieur(i))
20 Nlimite2.append(Nsuperieur(i))
21 n.append(i)
32 CHAPITRE 1. LES DÉNOMBREMENTS

22 print(’la liste contient : ’,len(n), ’ elements’)


23 #affichage du contenu des listes inf et sup
24 #print( " les valeurs inf : ",Nlimite1)
25 #print( " les valeurs sup : ",Nlimite2)
26 #affichage des 3 histogrammes
27 plt.figure()
28 plt.yscale(’log’)
29 plt.xscale(’log’)
30 plt.grid(True,which="both", linestyle=’--’)
31 plt.plot(n,Nlimite1,’black’,label=’limite inf’)
32 plt.title("N nombre de chiffres significatifs en fonction de n")
33 plt.plot(n,Nlimite2,’r--’,label=’limite sup’)
34 plt.legend()
35 plt.xlabel("valeur de n")
36 plt.ylabel("nombre de chiffres N")
37 plt.grid(True)
38 #sauvegarde de l image
39 plt.savefig("Cnnsur2.png")
40 plt.show()

n/2
Figure 1.14 – Nombre de chiffres de Cn en fonction de n en échelle logarithmique. On
voit par exemple qu’on a N = 100 pour une valeur de n de l’ordre de 300.
1.5. EXERCICES AUTOUR DE LA FORMULE DE STIRLING 33

n/2
4. Coefficient Cn et formule de Stirling : les très grands n
(a) En utilisant la formule de Stirling, montrer que si n (entier positif pair) est
grand on a : √
2n × 2
Cnn/2 ≈ √
π×n
(b) Déduire de ce qui précède une valeur approchée de C1000 500 .

(c) Calculer la différence entre la valeur exacte et la valeur approchée de C1000


500

(d) Trouver le % d’écart correspondant à la valeur précédente.


(e) Écrire un programme en Python qui permet de représenter le % d’écart dont il
est question plus haut pour n = 2p (donc n est un entier pair) avec p variant
de 1 à 6 000.
Solution
(a) On utilise la formule de Stirling :
√  n n
n! ≈ 2πn
e
Ce qui donne  n n

n! 2πn
Cnn/2 = ≈  ne n
(n/2)! × (n/2)! πn ×
2e
Ce qui donne après simplification

2n × 2
Cnn/2 ≈ √
πn
(b) Dans le cas où n = 1 000, l’approximation précédente donne :

500 21000 × 2
C1000 ≈ √ ≈ 2,703 56 × 10299
1000π
(c) En utilisant un logiciel de calcul mathématique adapté (Mathematica, Matlab..)
ou bien le langage Python 3, on peut calculer exactement C1000
500 .

Rappelons cette valeur (trouvée dans l’exercice précédent) :

2702882409454365695156146936259752754961520084465482870073928751066254
2870552219389861248392450237016536260608502154610480220975005067991754
9894219699518475423665484263751733356162464079737887344364574161119497
6045710449857562878805146009942194267523669158566031368626024844281092
96905863799821216320
Avec une application classique ou une calculatrice vous risquez d’avoir du mal
à effectuer ce calcul, car 1000! est vraiment un grand nombre. Par contre l’ap-
proximation de Stirling ne posera pas de problème. La différence entre la valeur
exacte et la valeur approchée vaut :
−6,758 05 × 10295
.
34 CHAPITRE 1. LES DÉNOMBREMENTS

(d) Le pourcentage d’écart est :


valeur exacte − valeur approchee
= −0, 00025
valeur exacte
Il est de l’ordre de −0, 025% soit encore −0, 25 pour mille.
(e) On utilise la librairie python decimal (voir https://docs.python.org/fr/3/
library/decimal.html) pour le calcul des racines carrées dans ce programme.
Si nous employons la fonction math.sqrt() de la librairie math classique nous
aurons un message d’erreur pour n grand. Cela provient de ce que le calcul
standard de racine carrée est opéré via une routine C, à la précision limitée en
type flottant. Cette fonction math.sqrt convertit d’abord l’entier en flottant
puis tente de calculer la racine carrée. Dans ce cas, la valeur retournée est
forcément un flottant. Pour n trop grand vous risquez d’obtenir le message
d’erreur :

OverflowError : long int too large to convert to float in python

C’est pour cela que nous utilisons dans ce code python :

decimal.Decimal(entier).sqrt()

pour le calcul de : √
entier
La valeur renvoyée est entière.
Le code Python suivant permet de représenter graphiquement l’écart relatif en
n/2
pour mille entre la valeur exacte de Cn et l’approximation de Stirling, si n est
n
pair. Sur la figure 1.15, on fait varier p = de 200 à 3 000.
2
1 #importation des librairies
2 import matplotlib.pyplot as plt
3 import decimal
4 import math
5 #fonctions
6 #on utilise la librairie decimal qui permet de calculer
7 #la racine carree correctement .
8 # utiliser la fonction sqrt enverrait un msg derreur si n est trop grand
9 def stirling(n) :
10 Cnnsur2 = (2**n)*decimal.Decimal((2/(math.pi*n))).sqrt()
11 return Cnnsur2
12 #comb(a,b) est le coeff binomial de la librairie math
13 def exact(p) :
14 Cnnsur22 = math.comb(2*p,p)
15 return Cnnsur22
16 # initialisation des listes et parametres
17 N=3000
18 nn=[]
19 pour1000=[]
20 #quelques tests intermediaires
1.5. EXERCICES AUTOUR DE LA FORMULE DE STIRLING 35

21 print(math.comb(1000,500))
22 print(math.comb(3334,1667))
23 print(decimal.Decimal(math.comb(3334,1667)).sqrt())
24 print(decimal.Decimal(3).sqrt())
25 #remplissage des deux tableaux n et pour1000
26 for p in range(200,N+1) :
27 n=2*p
28 ecart=(exact(p)-stirling(n))/exact(p)*1000
29 pour1000.append(ecart)
30 nn.append(p)
31 print(’la liste contient : ’,len(nn), ’ elements’)
32 #affichage graphique
33 plt.figure()
34 plt.grid(True,which="both", linestyle=’--’)
35 plt.plot(nn,pour1000,’black’,label=’ecart’)
36 plt.title("ecart relatif en pour 1000")
37 plt.legend()
38 plt.xlabel("valeur de p")
39 plt.ylabel(" ecart relatif pour 1000")
40 plt.grid(True)
41 #sauvegarde de l image
42 plt.savefig("dernier.png")
43 plt.show()

n/2
Figure 1.15 – Écart relatif en pour mille entre la valeur exacte de Cn et l’approximation
de Stirling, avec n = 2p pair. Ici p varie de 200 à 3 000.
Chapitre 2

Probabilités générales

2.1 Description ensembliste


On appelle événement le résultat d’une épreuve, c’est-à-dire d’une expérience aléatoire.
L’événement est dit élémentaire s’il est le résultat unique d’une épreuve.
L’univers Ω est un ensemble dont les éléments sont les événements élémentaires et pour
lequel les sous-ensembles sont les événements.
Il faut distinguer la notion d’événement élémentaire (obtenir un six en lançant un
dé par exemple) de la notion d’événement (obtenir un nombre pair en lançant un dé).
L’univers Ω est l’événement certain car il contient toutes les éventualités possibles, et
l’ensemble vide ∅ est l’événement impossible car il ne contient aucune possibilité.
Rappelons qu’on peut distinguer (pour ce cours) trois types d’ensembles :
— L’ensemble fini (composé d’un nombre fini d’éléments), c’est-à-dire qu’il faut un
nombre fini d’entiers naturels (de l’ensemble N) pour numéroter les éléments de
l’ensemble fini.
— L’ensemble infini dénombrable, c’est-à-dire qu’il faut un nombre infini d’entiers
naturels pour numéroter les éléments de l’ensemble (l’ensemble des entiers relatifs
Z en est un exemple). On dit aussi qu’on peut mettre l’ensemble infini dénombrable
en bijection avec N.
— L’ensemble infini non dénombrable, c’est-à-dire qu’on ne peut pas le mettre en
bijection avec l’ensemble des entiers naturels N (l’ensemble des réels R en est un
exemple).
On distingue les opérations suivantes :
1. En notant A un événement de Ω, son contraire (ou complémentaire) est noté A.
Il s’agit de l’événement réalisé si A ne l’est pas, voir la figure 2.1. En langage ensem-
bliste, on peut écrire que A ∪ A = Ω et A ∩ A = ∅.
2. En notant A et B deux événements de Ω, le ET logique entre A et B est réalisé si A
et B sont réalisés. On écrit cela en langage ensembliste :

A ET B = A ∩ B

Ce que l’on représente aussi sur la figure 2.2 (l’intersection est la partie plus sombre
évidemment, commune à A et B).

37
38 CHAPITRE 2. PROBABILITÉS GÉNÉRALES

Figure 2.1 – A et son complémentaire dans Ω : ce qui n’est pas A est A.

Figure 2.2 – Intersection de A et B

3. En notant A et B deux événements de Ω, le OU logique entre A et B est réalisé si


A ou B est réalisé. On écrit cela en langage ensembliste :

A OU B = A ∪ B

4. On dit que deux événements A et B sont incompatibles s’ils ne peuvent pas être
réalisés simultanément dans la même épreuve. On note cette incompatibilité :

A∩B =∅

Cela correspond à la figure 2.3.

Figure 2.3 – A et B disjoints : A ∩ B = ∅

Les principales propriétés de ces opérations OU et ET sont :


1. commutativité de ∩ et ∪ :
A∩B =B∩A
A∪B =B∪A
2. associativité de ∩ et ∪ :

A ∩ B ∩ C = (A ∩ B) ∩ C = A ∩ (B ∩ C)

A ∪ B ∪ C = (A ∪ B) ∪ C = A ∪ (B ∪ C)
2.2. PROBABILITÉ D’UN ÉVÉNEMENT 39

3. distributivité de ∩ par rapport à ∪ et réciproquement :

A ∩ (B ∪ C) = (A ∩ B) ∪ (A ∩ C)

A ∪ (B ∩ C) = (A ∪ B) ∩ (A ∪ C)

2.2 Probabilité d’un événement


Définition
On considère un événement E appartenant à l’ensemble univers Ω. On associe à cet
événement E un nombre réel 0 ≤ P (E) ≤ 1, appelé probabilité de l’événement E. Cette
probabilité est telle que :
— Si E = Ω alors P (E) = 1
— Si E = ∅ alors P (E) = 0
— Quel que soit l’événement E ∈ Ω, on a 0 ≤ P (E) ≤ 1

Propriétés
On donne les propriétés suivantes :
— Si deux événements A et B sont équiprobables, cela signifie que P (A) = P (B).
— Si A et B sont deux événements incompatibles, alors

P (A ∪ B) = P (A) + P (B)

L’incompatibilité entre A et B s’écrit aussi

A∩B =∅

— Si A et B sont deux événements quelconques de Ω, alors

P (A ∪ B) = P (A) + P (B) − P (A ∩ B)

— P (A) = 1 − P (A)
— Si A ⊂ B alors P (A) ≤ P (B)
— Pour toute suite finie de n événements deux à deux incompatibles A1 , A2 , ..., An :
n

P (A1 ∪ A2 ∪ ... ∪ An ) = P (Ai )
i=1

— On appelle système complet d’événements de l’ensemble univers Ω (non vide) un


ensemble fini de n parties non vides de Ω, deux à deux disjointes et dont l’union
forme l’ensemble univers Ω :
— si i = j alors Ai ∩ Aj = ∅
n
— Ai = Ω
i=1
40 CHAPITRE 2. PROBABILITÉS GÉNÉRALES

On dit aussi que le système complet de n événements forme une partition de Ω, ce


que l’on voit dans le cas de 4 événements sur la figure 2.4. On a, dans le cas d’un
système complet d’événements :
n

P (A1 ∪ A2 ∪ ... ∪ An ) = P (Ai ) = 1
i=1

Figure 2.4 – Système complet de 4 événements de Ω

— En considérant un système complet de n événements Ai de l’ensemble univers Ω, et


une partie B de Ω, on donne l’axiome des probabilités totales :
n

P (B) = P (Ai ∩ B)
i=1

— On dit que deux événements A et B sont indépendants si :

P (A ∩ B) = P (A) × P (B)

Construction pratique d’une probabilité (cas fini ou dénombrable)


On suppose que l’ensemble univers Ω est fini (nombre fini d’événements élémentaires) ou
infini dénombrable. On note Ω = (ω1 , ω2 , ..., ωn , ...), l’ensemble des événements élémentaires
possibles. On associe à chaque événement élémentaire ωi une probabilité pi , de telle façon
que :
— 0 ≤ pi ≤ 1
— dans le cas fini on a :
n
pi = 1
i=1

— dans le cas infini dénombrable on a :




pi = 1
i=1
2.3. EXERCICES SUR LES PROBABILITÉS GÉNÉRALES 41

— Si A est un événement quelconque (non élémentaire), la probabilité de A est alors


donnée par :

P (A) = pi
ωi ∈A

Dans le cas simple où l’ensemble univers Ω est fini et où les événements élémentaires
1
sont équiprobables, tous les pi sont égaux, et donc p = avec n = |Ω|, cardinal de Ω.
n
Dans le cas où les événements élémentaires sont équiprobables et si A est un événement
quelconque (non élémentaire), la probabilité de A est alors donnée par :

|A| |A|
P (A) = =
|Ω| n

2.3 Exercices sur les probabilités générales


1. Lancer de deux dés
On lance deux dés cubiques de couleurs différentes, à six faces, et on fait, après le
lancer, la somme S des deux sorties.
(a) Faire un tableau donnant les valeurs possibles de S et les probabilités associées
P (S).
(b) Introduire une troisième ligne au tableau en donnant les valeurs de la fonction
F définie comme
F (x) = P (S ≤ x)
avec x entier compris entre 2 et 12. On nomme cette fonction la fonction de
répartition.
(c) Représenter graphiquement F (x) et interpréter la courbe obtenue.
Solution
(a) Étant donné que la variable S représente les valeurs additionnées possibles, S
prend toutes les valeurs entières possibles entre 2 et 12 (inclus). On dresse le
tableau suivant :

x 2 3 4 5 6 7 8 9
P(S=x) 1/36 2/36 3/36 4/36 5/36 6/36 5/36 4/36
F(x) 1/36 3/36 6/36 10/36 15/36 21/36 26/36 30/36
x 10 11 12
P(S=x) 3/36 2/36 1/36
F(x) 33/36 35/36 36/36
La ligne x donne les valeurs possibles pour la somme des deux dés. La ligne
P (x) donne la probabilité associée à x. On doit la calculer pour chaque valeur
de x en notant une symétrie dans les calculs et les valeurs obtenues.
On calcule par exemple P (S = 7) :
— Le lancer des dés permet d’obtenir 6 × 6 = 36 combinaisons différentes.
42 CHAPITRE 2. PROBABILITÉS GÉNÉRALES

— Les combinaisons additives permettant de faire 7 sont : 1 + 6 (compte pour


2), 2 + 5 (compte pour 2), 3 + 4 (compte pour 2).
2+2+2 6
— On obtient donc P (S = 7) = = .
36 36
On calcule de même P (S = 8) :
— Le lancer des dés permet d’obtenir 6 × 6 = 36 combinaisons différentes.
— Les combinaisons additives permettant de faire 8 sont : 2 + 6 (compte pour
2), 3 + 5 (compte pour 2), 4 + 4 (compte pour 1).
2+2+1 5
— On obtient donc P (S = 7) = = .
36 36
Les autres calculs sont similaires.
On vérifie par ailleurs que la somme de toutes les probabilités donne bien 1 :
12
 36
P (x) = =1
36
x=2

(b) La troisième ligne du tableau précédent donne les valeurs de F (x), que l’on
obtient facilement par additions successives, par exemple :
1 2 3 4 5 15
F (6) = P (2) + P (3) + P (4) + P (5) + P (6) = + + + + =
36 36 36 36 36 36
(c) La fonction F représente la probabilité que la somme S obtenue soit inférieure
ou égale à une valeur fixée, comprise entre 2 et 12. Il est clair que cette fonction
est positive et croissante. Graphiquement, on peut représenter F par la figure
2.5. La fonction F tend vers 1 pour x = 12.

Figure 2.5 – Fonction de répartition F (x) (discrète) pour le lancer des deux dés.
2.3. EXERCICES SUR LES PROBABILITÉS GÉNÉRALES 43

2. Le paradoxe des anniversaires


On se donne un groupe de n personnes tel que n ≤ 365. On suppose qu’une année
dure 365 jours. On suppose aussi que toutes les dates de naissance sont équiprobables.
(a) Exprimer la probabilité Q, en fonction de n, qu’un groupe de n personnes choi-
sies au hasard dans la rue soit tel que toutes les dates de naissance soient
différentes (jour et mois seulement).
(b) En utilisant le langage python, représenter cette probabilité Q avec n variant
de 1 à 40.
(c) Combien faut-il de personnes au minimum pour que cette probabilité Q soit
inférieure à 50 % ?
(d) Combien faut-il de personnes au minimum pour que cette probabilité Q soit
inférieure à 20 % ?
(e) Si on dispose d’un groupe de 50 personnes, quelle est la probabilité P que deux
au moins de ces personnes aient la même date anniversaire ?
Solution
(a) La première personne choisie peut avoir n’importe quelle date de naissance
(jour/mois). La probabilité correspondante est donc
365
P (1) = =1
365
La seconde personne choisie peut avoir n’importe quelle date de naissance (jour/-
mois) sauf une. La probabilité correspondante est donc
364
P (2) =
365
et ainsi de suite jusqu’à n.
On obtient donc :
 365   364   365 − n + 1 
Q(n) = P (1) × P (2) × ... × P (n) = × × ... ×
365 365 365
Soit encore
 1   2   n − 1
Q(n) = 1 − × 1− × ... × 1 −
365 365 365
Ainsi a-t-on
1
Q(2) = 1 − ≈ 99, 73%
365
(b) On écrit le code python ci-dessous, qui permet d’obtenir la figure 2.6.
1 #importation des librairies
2 import matplotlib.pyplot as plt
3 import math
4 # initialisation
5 N=41
6 n=[]
44 CHAPITRE 2. PROBABILITÉS GÉNÉRALES

7 Q=[]
8 QQ=1
9 #boucle et remplissage de la probaQ
10 for j in range(1,N):
11 n.append(j)
12 QQ=QQ*(1-(j-1)/365) # j− 1 car Q(1)=1
13 Q.append(QQ*100) #remplissage de la liste proba
14 #affichage de la longueur de la liste avec len ()
15 print(’la liste contient : ’,len(n), ’ elements’)
16 #affichage graphique
17 plt.figure()
18 plt.subplot(211)
19 plt.plot(n,Q,color=’red’,label=’proba dates differentes’)
20 plt.plot(n,Q,’k+’)
21 plt.xlabel(’entier n’)
22 plt.ylabel(’proba Q en %’)
23 plt.title(’probleme des anniversaires’)
24 plt.grid(True)
25 plt.legend()
26 plt.subplot(212)
27 plt.plot(n,Q,color=’red’,label=’proba dates differentes’)
28 plt.plot(n,Q,’k+’)
29 plt.xlim(15,25)
30 plt.ylim(40,70)
31 plt.ylabel(’proba Q en %’)
32 plt.grid(True)
33 plt.legend()
34 #sauvegarde de l image
35 plt.savefig("anniv.png")
36 plt.show()

(c) Comme on le voit sur la figure 2.6, au delà de 23 personnes la probabilité Q


est inférieure à 50 %. Autrement dit, si un groupe atteint 23 personnes, il y a
plus de 50 % de chance que deux personnes au moins aient une même date de
naissance.
(d) Comme on le voit sur la figure 2.6, au delà de 35 personnes la probabilité Q
est inférieure à 20 %. Autrement dit, si un groupe atteint 35 personnes, il y a
plus de 80 % de chance que deux personnes au moins aient une même date de
naissance.
(e) On obtient graphiquement ou par le calcul que Q(50) ≈ 3, 0 %. La probabilité
P que deux personnes au moins aient la même date anniversaire est

P = 1 − Q ≈ 97 %
2.3. EXERCICES SUR LES PROBABILITÉS GÉNÉRALES 45

Figure 2.6 – Problème des anniversaires : probabilité Q en fonction de n : Q représente


la probabilité que toutes les dates anniversaires soient différentes. La figure du dessous est
un zoom de la figure du dessus, entre 16 et 25.

3. Jeu de 52 cartes
On dispose d’un jeu de 52 cartes. On distribue une main de six cartes.
(a) Calculer la probabilités d’avoir trois as.
(b) Calculer la probabilité d’avoir deux trèfles.
(c) Calculer la probabilité d’avoir le roi de cœur.
(d) Calculer la probabilité d’avoir au moins deux as.
(e) Calculer la probabilité d’avoir au plus deux as.
Solution
(a) On reprend les dénombrements vus dans le chapitre précédent (exercice 7), et on
calcule les probabilités correspondantes avec la formule concernant l’événement
46 CHAPITRE 2. PROBABILITÉS GÉNÉRALES

A:
|A|
P (A) =
|Ω|
Dans tous les cas, l’ordre des cartes dans la main ne compte pas, on utilise donc
les combinaisons Cnp pour le calcul. Il y a 4 as et on dispose de 3 d’entre eux.
Ce qui autorise C43 combinaisons pour les 3 as. Il reste 3 cartes, à choisir parmi
52 − 4 = 48 cartes. Cela engendre C48 3 combinaisons. Au total on a donc :

4! 48! 4 × 48 × 47 × 46
N = C43 × C48
3
= × = = 69 184
3!1! 3!45! 1×2×3
Par ailleurs, le nombre total de mains de six cartes dans un jeu de 52 est de
6 . La probabilité recherchée est donc :
C52
69 184 4! × 48! × 6! × 46! 4 × 6! × 46
P = 6 = = ≈ 0, 3398 %
C52 3! × 3! × 45! × 52! 3! × 52 × 51 × 50 × 49

(b) Dans une main de six cartes on a deux trèfles avec 13 possibilités à trèfle.
On calcule donc le nombre total N de mains possibles possédant deux trèfles :

2 4 13! 39! 13 × 12 × 39 × 38 × 37 × 36
N = C13 × C39 = × = = 6 415 578
2!11! 4!35! 2 × 24
La probabilité cherchée est donc :
6 415 578
P = 6 ≈ 31, 51 %
C52
(c) Dans une main de six cartes on a le roi de cœur, ce qui réduit à 51 possibilités
les cinq cartes restantes, soit : C51
5 . On calcule donc le nombre total N de mains

possibles :
51! 51 × 50 × 49 × 48 × 47
N = C11 × C51
5
=1× = = 2 349 060
5!46! 120
La probabilité cherchée est donc :
2 349 060
P = 6 ≈ 11, 54 %
C52
(d) Avoir au moins deux as signifie que la main en contient deux ou plus. Autrement
dit, on doit exclure les deux cas où on a zéro ou un as. Par complémentarité le
nombre de mains N recherché est donc :
6
N = C52 − C40 × C48
6
− C41 × C48
5
= 20 358 520 − 12 271 512 − 6 849 216
On trouve donc
N = 1 237 792
La probabilité cherchée est donc :
1 237 792
P = 6 ≈ 6, 08%
C52
2.3. EXERCICES SUR LES PROBABILITÉS GÉNÉRALES 47

(e) Avoir au plus deux as signifie que la main en contient 0, 1 ou 2. Autrement dit,
le nombre de mains N est la somme de trois termes :

N = N0 + N1 + N2 = C40 × C48
6
+ C41 × C48
5 4
+ C42 × C48

N = 12 271 512 + 6 849 216 + 1 167 480 = 20 288 208


La probabilité cherchée est donc :
20 288 208
P = 6 ≈ 99, 65 %
C52

4. Lancer de dés
On lance n dés en même temps. Déterminer la valeur minimale de n pour que la
3
probabilité P (obtenir au moins 1 cinq) ≥ .
4
Solution
On note A l’événement "ne pas obtenir de cinq". La probabilité P (A) est clairement :
 5 n
P (A) =
6
La probabilité cherchée est donc le complémentaire :
 5 n
P (obtenir au moins 1 cinq) = 1 −
6
On détermine donc n en faisant  5 n 1

6 4
soit encore
ln(1/4)
n≥ ≈ 7, 6
ln(5/6)
soit finalement
n≥8
5. Redondance
Un système complexe A est composé de 100 pièces supposées identiques, chacune
ayant la probabilité q d’être défectueuse. On cherche à étudier la sûreté de fonction-
nement de A, sachant que si une seule pièce parmi les 100 est défectueuse (en panne),
A ne peut plus être opérationnel.
(a) On désire que le système A soit opérationnel avec une probabilité de fonction-
nement PF (ou sûreté de fonctionnement) de 99 %. Calculer la valeur minimale
de q.
(b) En pratique q = 10−3 . Calculer la valeur réelle de PF .
(c) On rend le système redondant en mettant en parallèle (en doublant) deux sys-
tèmes identiques A1 et A2 (composés tous les deux des mêmes 100 pièces).
Expliquer pourquoi cela augmente la sûreté globale. Calculer la valeur de PF
avec la valeur q de la question précédente.
48 CHAPITRE 2. PROBABILITÉS GÉNÉRALES

(d) On décide maintenant de tripler le système A, avec toujours la valeur pratique


q = 10−3 . Calculer la nouvelle valeur de PF .
Solution
(a) La probabilité qu’une pièce soit fonctionnelle est p = 1 − q. La probabilité PF
que A soit fonctionnel est donc

PF = (1 − q)100

On en déduit que
1/100
q = 1 − PF = 1 − 0, 991/100 ≈ 1, 0 × 10−4

Si q est supérieur à la valeur calculée de 10−4 la sûreté de fonctionnement PF


sera forcément inférieure à 99 %.
(b) Comme q = 10−3 , on en déduit que

PF = (1 − q)100 = (1 − 10−3 )100 ≈ 90, 48 % < 99 %

(c) On considère que le nouveau système A est composé de 2 sous-systèmes indé-


pendants et identiques A1 et A2. Le système A sera fonctionnel si :
— A1 est fonctionnel
— A2 est fonctionnel
— A1 et A2 sont fonctionnels
On peut donc calculer PF comme

PF = P (A1 ∪ A2) = P (A1) + P (A2) − P (A1 ∩ A2)

Comme A1 et A2 sont supposés être indépendants, on peut réécrire l’équation


précédente comme

PF = P (A1) + P (A2) − P (A1) × P (A2)

et comme A1 et A2 sont identiques :

PF = 2 × P (A1) − P 2 (A1) ≈ 2 × 0,904 8 − 0,904 82 = 99, 09 %

(d) On peut considérer le système A, composé de trois sous-systèmes identiques,


comme constitué de A1 d’un coté et de (A’= A2 + A3) de l’autre. Le raisonne-
ment précédent peut être répété, avec le fait que A1, A2 et A3 sont mutuellement
indépendants :
  
PF = P (A1 ∪ A ) = P (A1) + P (A ) − P (A1 ∩ A )

Ce qui donne

PF = P (A1) + P (A2) + P (A3) − P (A2 ∩ A3) − P (A1 ∩ A )
2.4. PROBABILITÉS CONDITIONNELLES ET THÉORÈME DE BAYES 49

Soit encore

PF = P (A1) + P (A2) + P (A3) − P (A2) × P (A3) − P (A1 ∩ A )
Il reste à traiter le dernier terme

P (A1 ∩ A ) = P (A1 ∩ (A2 ∪ A3))
Soit encore en distribuant
P (A1 ∩ (A2 ∪ A3)) = P ((A1 ∩ A2) ∪ (A1 ∩ A3))
Finalement
P ((A1 ∩ A2) ∪ (A1 ∩ A3)) = P (A1 ∩ A2) + P (A1 ∩ A3) − P (A1 ∩ A2 ∩ A3)
Du fait que les systèmes sont identiques et indépendants, on a

P ((A1 ∩ A2) ∪ (A1 ∩ A3)) = P (A1)2 + P (A1)2 − P (A1)3


La probabilité PF s’écrit donc
PF = 3 × P (A1) − 3 × P (A1)2 + P (A1)3 = 3 × 0,904 8 − 3 × 0,904 82 + 0,904 83
d’où
PF = 99, 91 %

2.4 Probabilités conditionnelles et théorème de Bayes


Probabilités conditionnelles
Soient 2 événements A et B de probabilité non nulle. On définit P (A|B) comme la
probabilité que A se produise, sachant que l’événement B est réalisé. On peut définir de
même P (B|A) comme la probabilité que B se produise, sachant que l’événement A est
réalisé. On a la relation fondamentale suivante :

P (A|B) × P (B) = P (A ∩ B) = P (B|A) × P (A)


Ce qui permet d’écrire :
P (A ∩ B)
P (A|B) =
P (B)
soit :

P (B|A)P (A)
P (A|B) =
P (B)

Notion d’indépendance
Si P (A|B) = P (A) on dit que les événements A et B sont indépendants, car la proba-
bilité de réalisation de A est indépendante de la réalisation (ou non) de B. Cela conduit
donc à la condition d’indépendance :
P (A ∩ B) = P (A) × P (B)
50 CHAPITRE 2. PROBABILITÉS GÉNÉRALES

Probabilités totales
Si on dispose d’un système complet d’événements A1 , A2 , .., An , alors la probabilité
totale d’obtenir l’événement B est liée à la somme des probabilités conditionnelles sur les
Ai . La formule des probabilités totales s’écrit :

n

P (B) = P (B|Ai ) × P (Ai )
i=1

Le théorème de Bayes
On se donne deux événements A et A exclusifs l’un de l’autre et dont l’union est l’espace
univers Ω : A ∪ A = Ω. On se donne B un événement quelconque de Ω.
On part de

P (B|A)P (A)
P (A|B) =
P (B)
et on applique la formule des probabilités totales vue précédemment.
On obtient alors le théorème de Bayes :

P (B|A)P (A)
P (A|B) =
P (B|A)P (A) + P (B|A)P (A)

Si on dispose d’un système complet d’événements A1 , A2 , .., An , on peut réécrire le


théorème de Bayes sous la forme :

P (B|Ai )P (Ai )
P (Ai |B) = n

P (B|Ap )P (Ap )
p=1

Le cas précédent est un cas particulier de ce théorème général, puisque les 2 événements
A et A forment un système complet de deux événements de Ω.
2.5. EXERCICES SUR LES PROBABILITÉS CONDITIONNELLES 51

2.5 Exercices sur les probabilités conditionnelles


1. Une affaire de famille
Une famille est composée de quatre personnes, deux enfants et deux adultes.
(a) Le plus jeune des deux enfants est une fille. Quelle est la probabilité que l’aîné
soit un garçon ?
(b) L’un des deux enfants est une fille. Quelle est la probabilité que l’autre enfant
soit un garçon ?
Solution
(a) Il s’agit d’un problème de probabilité conditionnelle : on désire calculer dans
cette question la probabilité que l’autre enfant soit un garçon (G) si le plus
jeune est une fille (F ) :
P (G|F (jeune))
Si le plus jeune est une fille (F), en notant les couples d’enfants dans l’ordre
(- jeune, + jeune) on dispose d’un ensemble univers de 2 éléments :

(F, F ), (G, F )

(On ne tient pas compte en effet des 2 cas (G, G) et (F, G) : le plus jeune ne
peut pas être un G par hypothèse). Le cas unique que nous voulons est (G, F ).
La probabilité recherchée vaut donc :

1
P (G|F (jeune)) =
2
(b) Il s’agit encore d’un problème de probabilité conditionnelle : on désire calculer
dans cette question la probabilité que l’un des enfants soit un garçon (G) si
l’autre est une fille (F ) :
P (G|F )
Si l’un des enfants est une fille (F ), en notant les couples d’enfants dans l’ordre
(- jeune, + jeune) on dispose d’un ensemble univers de 3 éléments :

(F, F ), (G, F ), (F, G)

on doit en effet exclure le cas (G, G) (pas de fille F ).


Les deux cas qui nous intéressent sont (G, F ) et (F, G). la probabilité recherchée
vaut donc :

2
P (G|F ) = ≈ 67 %
3
2. Faux positifs
Une maladie grave touche 1 personne sur 10 000. Un nouveau test fait sont apparition :
si vous êtes malade, il est positif dans 99 % des cas. Si vous n’êtes pas malade , il
est positif dans p = 0, 1 % des cas (on parle de faux positif). On se demande s’il est
légitime de commercialiser ce test.
52 CHAPITRE 2. PROBABILITÉS GÉNÉRALES

(a) Calculez la probabilité P d’être malade si le test est positif.


(b) Exprimer la la probabilité P d’être malade si le test est positif en fonction de p.
(c) Analyser les résultats qui précédent, et expliquer comment augmenter la proba-
bilité P (M |P os).
(d) On considère que le test est fiable si P (M |P os) est supérieure à 90 %. Trouver
la valeur de p en ppm (parties par million) correspondante.
(e) Écrire un petit programme Python qui montre la variation de P (M |P os) en
fonction de celle de p, avec p en ppm, dans l’intervalle [1, 500].
Solution
(a) On note les événements M : être malade, S : être sain, P os : être positif au test.
L’exercice nous indique que :
1
P (M ) =
10 000
donc
9 999
P (S) =
10 000
ainsi que les probabilités conditionnelles :

P (P os|M ) = 0, 99

et
0, 1
P (P os|S) =
100
Ce que l’on veut calculer est la probabilité conditionnelle :

P (M |P os)

Pour cela, on va utiliser le théorème de Bayes, en remarquant que les événements


M et S sont complémentaires :

P (P os|M )P (M )
P (M |P os) =
P (P os|M )P (M ) + P (P os|S)P (S)

On a donc :
1
0, 99 × 1
P (M |P os) = 10 000 = ≈ 9, 0 %
1 0, 1 9 999 1 + 0, 1 × 101
0, 99 × + ×
10 000 100 10 000

(b) De façon générale, avec p :

1
0, 99 × 1
P (M |P os) = 10 000 =
1 9 999 1 + 10 100 × p
0, 99 × +p×
10 000 10 000
2.5. EXERCICES SUR LES PROBABILITÉS CONDITIONNELLES 53

(c) La question précédente montre que plus p sera petit, plus P (M |P os) sera grand
et tendra vers 1.
(d) On cherche p tel que :
1
P (M |P os) = > 90%
1 + 10 100 × p
ce qui donne la condition :
1
−1
0, 9
p< ≈ 11 ppm
10 100
le paramètre p ne doit pas dépasser la valeur de 11 ppm.
(e) En prenant la probabilité p dans l’intervalle [1, 500] en ppm, on peut écrire le
programme python suivant :
1 # librairie
2 import matplotlib.pyplot as plt
3 #fonction principale ( probabilite conditionnelle )
4 def PC(p):
5 # p proba que le test soit positif si pas malade (p en ppm)
6 num=1
7 denom=1+0.0101*p
8 proba=num/denom
9 return proba
10 # initialisation des parametres
11 ListeProba=[]
12 ListeP=[]
13 N=51
14 #boucle principale du calcul ( i varie de 0 a N−1)
15 for i in range(N):
16 p=1+i*10.0
17 ListeProba.append(PC(p)*100)
18 ListeP.append(p)
19
20 #affichage graphique
21 print(ListeP)
22 print(ListeProba)
23 plt.plot(ListeP,ListeProba,’ro’,label="P(M si Positif)")
24 plt.plot(ListeP,ListeProba,’black’)
25 plt.title("probabilites conditionnelles ")
26 plt.ylabel("probabilite en pourcent")
27 plt.xlabel("parametre p en partie par million ppm ")
28 plt.grid()
29 plt.legend()
30 plt.savefig(’fauxPos.png’)
31 plt.show()

Ce programme obtient des valeurs successives de la probabilité P (M |P os), p


prenant 50 valeurs successives, entre 1 et 501 ppm. Le figure finale est sauve-
gardée sous le nom fauxPos.png que l’on voit ci-dessous, en figure 2.7.
54 CHAPITRE 2. PROBABILITÉS GÉNÉRALES

Figure 2.7 – Représentation du calcul de faux positif en fonction de p en ppm

3. Pirates
On dispose d’un sac de 100 pièces, parmi lesquelles M sont fausses : elles possèdent
deux faces identiques (et pas de piles). On tire au hasard une pièce parmi les 100,
sans contrôler si elle est bonne ou fausse. On la lance en l’air N fois et note à chaque
fois la sortie : on suppose que l’on obtient N faces consécutives.
(a) En utilisant le théorème de Bayes, exprimer la probabilité que la pièce soit fausse,
sachant qu’on a obtenu N faces consécutives après N lancers, en fonction de M
et N .
(b) Calculer numériquement P (F ausse|N = 3) si M = 10.
(c) Calculer numériquement P (F ausse|N = 7) si M = 10.
(d) Calculer numériquement P (F ausse|N = 10) si M = 10.
(e) Écrire un programme Python qui calcule toutes les probabilités, pour M = 10
avec N variant de 1 à 15. Ce programme représentera ces probabilités par une
courbe.
(f) On fixe M = 10. Déterminer la valeur de N à partir de laquelle P (F |N ) > α
avec un seuil α valant 80 %, 90 % puis 99 %.
(g) Utiliser le programme précédent pour représenter sur un même graphique les
courbes correspondant à M = 1, M = 5, M = 10 pour N variant de 1 à 15.
2.5. EXERCICES SUR LES PROBABILITÉS CONDITIONNELLES 55

‘ Solution
(a) On veut déterminer la probabilité que la pièce soit fausse, sachant qu’on a obtenu
N faces consécutives. On utilise la partition des pièces : F pour fausse et V pour
M M
vraie, ce qui donne P (F ) = et P (V ) = 1 − .
100 100
On utilise le théorème de Bayes pour établir l’expression :

P (N |F )P (F )
P (F |N ) =
P (N |F )P (F ) + P (N |V )P (V )

Si la pièce est fausse, il est clair que P (N |F ) = 1 alors que si elle est vraie, elle
 N
1
dispose d’un pile et d’un face (équiprobables) et donc : P (N |V ) = .
2
Ce qui nous donne :

1 × M/100
P (F |N ) =
1
1 × M/100 + N × (1 − M/100)
2
soit finalement
1
P (F |N ) =  100 
1
1+ N × −1
2 M
(b) Si M = 10 et N = 3 on obtient :
1
P (F |N = 3) =  ≈ 47, 1 %
1  100
1+ × −1
8 10
(c) Si M = 10 et N = 7 on obtient :
1
P (F |N = 7) =  100  ≈ 93, 4 %
1
1+ 7 × −1
2 10
(d) Si M = 10 et N = 10 on obtient :
1
P (F |N = 10) =  100  ≈ 99, 1 %
1
1 + 10 × −1
2 10
(e) Le code Python qui suit calcule la probabilité conditionnelle P (F |N ) avec N
qui varie de 1 à 15, la valeur de M étant fixée à 10. La partie affichage du code
représente cette probabilité.
1 # librairie
2 import matplotlib.pyplot as plt
3 #fonction principale ( calcul de la proba pour a et b)
4 def PFsiNf(a,b):
5 total=100.0 (nombre total pieces)
56 CHAPITRE 2. PROBABILITÉS GÉNÉRALES

6 #a = nombre faces obtenus


7 # b = nb de fausses pieces parmi 100
8 num=1.0
9 denom=1+(100.0/b-1.0)/2.0**a
10 proba=num/denom
11 return proba
12 # initialisation des parametres
13 ListeProba=[]
14 ListeCompteur=[]
15 M=10
16 N=15
17 #boucle principale du calcul
18 for i in range(N):
19 ListeProba.append(PFsiNf(i+1,M))
20 ListeCompteur.append(i+1)
21 #affichage graphique
22 plt.plot(ListeCompteur,ListeProba,’ro’,label="M=10")
23 plt.plot(ListeCompteur,ListeProba,’black’)
24 plt.title("probabilites conditionnelles - M =10")
25 plt.ylabel("probabilite")
26 plt.xlabel("nombre N de Faces consecutifs ")
27 plt.grid()
28 plt.xlim(1,15)
29 plt.legend()
30 plt.savefig(’piece2.png’)
31 plt.show()

La figure 2.8 montre la variation de P (F |N ) avec N .


(f) La probabilité recherchée peut s’écrire, avec M = 10 :
1
P (F |N ) =
9
1+
2N
On peut dresser le tableau de valeurs 2.9 qui correspond à la figure 2.8.
On constate que :
— si N ≥ 6 alors P (F |N ) > 80 %.
— si N ≥ 7 alors P (F |N ) > 90 %.
— si N ≥ 10 alors P (F |N ) > 99 %.
2.5. EXERCICES SUR LES PROBABILITÉS CONDITIONNELLES 57

Figure 2.8 – Probabilités conditionnelles - cas M = 10

Figure 2.9 – Probabilité P (F |N ) dans le cas où M = 10.


58 CHAPITRE 2. PROBABILITÉS GÉNÉRALES

(g) Une petite amélioration du programme précédent permet de tracer les trois
courbes demandées sur un même graphique, pour les valeurs M = 1, M = 5 et
M = 10. La figure 2.10 montre les trois courbes correspondantes.
1 #importation librairie
2 import matplotlib.pyplot as plt
3 # definition de la fonction principale ( calcul de la proba pour a et b)
4 #qui calcule les probabilites
5 def PFsiNf(a,b):
6 total=100.0
7 #a = nombre faces obtenus
8 # b = nb de fausses pieces parmi 100
9 num=1.0
10 denom=1+(100.0/b-1.0)/2.0**a
11 proba=num/denom
12 return proba
13 # initialisation des parametres
14 ListeProba1=[]
15 ListeProba5=[]
16 ListeProba10=[]
17 ListeCompteur=[]
18 N=15
19 #remplissage des listes
20 for i in range(N):
21 ListeProba1.append(PFsiNf(i+1,1))
22 ListeProba5.append(PFsiNf(i+1,5))
23 ListeProba10.append(PFsiNf(i+1,10))
24 ListeCompteur.append(i+1)
25 #affichage graphique multicourbes
26 plt.plot(ListeCompteur,ListeProba1,’ro’,label="M=1")
27 plt.plot(ListeCompteur,ListeProba1,’black’)
28 plt.plot(ListeCompteur,ListeProba5,’r+’,label="M=5")
29 plt.plot(ListeCompteur,ListeProba5,’black’)
30 plt.plot(ListeCompteur,ListeProba10,’rs’,label="M=10")
31 plt.plot(ListeCompteur,ListeProba10,’black’)
32 plt.title("probabilites conditionnelles")
33 plt.ylabel("probabilite")
34 plt.xlabel("nombre N de Faces consecutifs ")
35 plt.grid()
36 plt.xlim(1,15)
37 plt.legend()
38 plt.savefig(’piece.png’)
39 plt.show()
2.5. EXERCICES SUR LES PROBABILITÉS CONDITIONNELLES 59

Figure 2.10 – Probabilités conditionnelles - trois valeurs de M

4. Problème de Monty Hall


En référence à un jeu télévisé américain (qui oppose présentateur et joueur), on pose
le problème suivant, dit de Monty Hall :
Un joueur est placé devant trois portes fermées. Derrière l’une d’elles se trouve une
voiture et derrière chacune des deux autres se trouve une chèvre. La probabilité que la
voiture se trouve derrière une porte est la même pour les trois portes (équiprobabilité
de 1/3).
Le joueur doit tout d’abord désigner une porte fermée, sans savoir ce qu’il y a derrière.
Le présentateur (qui sait dès le départ derrière quelle porte se trouve la voiture) doit
alors ouvrir une porte qui n’est ni celle choisie par le candidat, ni celle cachant
la voiture. Autrement dit, la porte ouverte par le présentateur montre une chèvre.
Le candidat a alors le droit :
— soit d’ouvrir la porte qu’il a choisie initialement (et qui est toujours fermée),
— soit d’ouvrir la troisième porte, celle qu’il n’a pas choisie au début du jeu et qui
reste fermée.
Il peut donc conserver son choix initial ou décider de changer de porte fermée.
On veut calculer la probabilité qu’il gagne s’il ne change pas son choix, et celle qu’il
gagne s’il le change.
Dasn ce problème, on se demande quelle est la meilleure stratégie pour le joueur,
60 CHAPITRE 2. PROBABILITÉS GÉNÉRALES

une fois la porte (chèvre) découverte par le présentateur : changer son choix, ou bien
conserver son choix initial ?
(a) En faisant un raisonnement simple, calculer la probabilité qu’a le joueur de
gagner sans changer de porte, puis la probabilité correspondant au cas du chan-
gement de porte.
(b) Expliciter les termes du paradoxe du jeu de Monty Hall. Autrement dit, peut-
on tenir un raisonnement différent du précédent menant à un résultat différent ?
Que faire alors pour résoudre cet apparent paradoxe ?
(c) En utilisant le théorème de Bayes, calculer la probabilité qu’a le joueur de gagner
sans changer de porte, puis la probabilité correspondant au cas du changement
de porte.
(d) Afin de vérifier les calculs précédent (dans le cas du changement de porte) et de
résoudre le paradoxe de Monty Hall, écrire un programme Python qui va tester
la probabilité de gagner la voiture, en effectuant N = 1 000 parties successives,
puis N = 1 000 000 parties.
Solution
(a) On suppose tout d’abord que le joueur ne change pas de porte. Dans ce cas,
l’action du présentateur ne joue aucun rôle, le choix fait par le joueur donne
1
forcément une probabilité P = de choisir la porte cachant la voiture.
3
On suppose maintenant que le joueur change de porte. Puisqu’il avait P =
1/3 de chance de gagner sans changer de porte, il doit avoir le complémentaire
2
Q = 1 − P = de chance de gagner la voiture en changeant de porte.
3
(b) Une autre façon de raisonner consiste à dire qu’une fois la porte à la chèvre
ouverte, il reste deux portes fermées, l’une cachant la voiture. Chaque porte a
une chance sur deux de masquer la voiture, donc quel que soit le choix du joueur
1
on a forcément P = Q = . Le paradoxe de Monty Hall se situe ici : selon les
2
deux raisonnements proposés on trouve deux valeurs différentes pour P et Q
sans qu’on puisse départager les deux façons de voir. Une simulation numérique
(en python) sera donc la bienvenue.
(c) Remarquons d’abord que si le joueur décide de ne pas changer de porte
après l’ouverture (sur une chèvre) effectuée par le présentateur, cela revient à
1
dire que le choix initial du joueur a la probabilité P = d’être le bon, du fait de
3
l’équiprobabilité des trois portes. En effet, dans ce cas l’action du présentateur
n’a pas besoin d’être prise en compte.
On s’intéresse maintenant au cas plus complexe du changement de porte.
On note V1 le cas où la voiture est derrière la porte 1, V2 derrière la porte 2,
et V3 derrière la porte 3. On note Oi le cas où le présentateur ouvre la porte i
(qui ne cache pas la voiture). Les trois événements V1 , V2 , V3 forment un système
complet de tous les événements possibles.
Pour fixer les choses, on suppose que le joueur choisit, au début du jeu, la porte
3 qui reste fermée.
2.5. EXERCICES SUR LES PROBABILITÉS CONDITIONNELLES 61

Pour calculer la probabilité qu’a le joueur de gagner dans le cas du changement


de porte, on veut déterminer P (V2 |O1 ) dans le cas où le présentateur ouvre la
porte 1 (Il est clair que la valeur de P (V1 |O2 ) sera la même, par symétrie du
problème). Le théorème de Bayes permet d’écrire, avec la partition mentionnée
plus haut :

P (O1 |V2 )P (V2 )


P (V2 |O1 ) =
P (O1 |V1 )P (V1 ) + P (O1 |V2 )P (V2 ) + P (O1 |V3 )P (V3 )

On a forcément des valeurs équiprobables :


1
P (V1 ) = P (V2 ) = P (V3 ) =
3
Par ailleurs, on a nécessairement :

P (O1 |V1 ) = 0

et
P (O1 |V2 ) = 1
enfin pour des raisons d’équiprobabilité entre les portes 1 et 2, si la voiture est
derrière la porte 3 :
1
P (O1 |V3 ) = = P (O2 |V3 )
2
La probabilité cherchée s’écrit :

1
1× 2
P (V2 |O1 ) = 3 =
1 1 1 1 3
0× +1× + ×
3 3 2 3
La conclusion est donc que le joueur a tout intérêt à changer son choix, une fois
la porte découverte par le présentateur. Il aura ainsi 2 chances sur 3 de gagner.
On a ici utilisé les probabilités conditionnelles pour obtenir un des résultats
précédemment mis en avant, mais sans résoudre le paradoxe du raisonnement.
(d) On construit le programme suivant, dans le cas du changement systématique
de la porte par le joueur, une fois que le présentateur a découvert une porte
(chèvre). C’est la fonction Monty qui détermine le nombre de fois où le joueur
découvre la voiture pour N tirages (introduits par la boucle while).
1 #le probleme de Monty Hall
2 #estimation de la proba de gagner dans le cas
3 #du changement systematique de porte par le joueur
4 #IMPORTANT ICI :
5 #On suppose que la voiture est en porte 1
6 import random
7 def Monty(n):
8 total=0
9 gagne=0
10 while(total<n):
62 CHAPITRE 2. PROBABILITÉS GÉNÉRALES

11 #on note p la porte initialement choisie au hasard par le candidat


12 #on note Pr le second choix fait par le joueur (apres ouverture par
13 #le presentateur )
14 p=random.randint(1,3) #3 choix possibles
15 if (p==1):
16 Pr=random.randint(2,3) #2 choix possibles
17 if (p==2) :
18 Pr=1
19 if (p==3):
20 Pr=1
21 if (Pr==1):
22 gagne=gagne+1
23 total=total+1
24 return gagne
25
26 print("Dans le cas de 1000 tirages, la proba est :",Monty(1000)/1000)
27 N=1000000
28 print("Dans le cas de ",N," tirages, la proba est :",Monty(N)/N)

Les résultats affichés sont les suivants, comme attendu :


1 Dans le cas de 1000 tirages, la proba est : 0.656
2 Dans le cas de 1000000 tirages, la proba est : 0.667019
2
On trouve bien une valeur compatible avec P = ≈ 0, 667. Remarquons que
3
dans le code python ci-dessus on utilise une fonction de la librairie random : il
s’agit de randint(a,b). Elle permet en effet de tirer au hasard, et de manière
équiprobable entre tous les entiers compris entre les entiers a et b inclus.
On effectue un nombre de 1 000 puis 1 000 000 de tirages, et on détermine la
valeur de la variable gagne qui représente le nombre de fois où le joueur gagne
sur le nombre total N de tirages.
gagne
La probabilité cherchée est simplement le quotient .
N
On raconte que le grand mathématicien Paul Erdos ne put être convaincu de
la justesse du choix de changement de porte qu’après usage d’une simulation
informatique.
5. Histoire de fumeur
Un fumeur décide (le jour 1) de cesser de fumer. Son fonctionnement mental est le
suivant :
— S’il reste un jour sans fumer, alors il ne fume pas le lendemain avec une probabilité
de 0, 6.
— Par contre, s’il cède et fume un jour donné, la probabilité qu’il fume le lendemain
est de 0, 7.
On appelle an la probabilité qu’il ne fume pas le jour n et bn la probabilité qu’il fume
le jour n.
(a) Identifier les deux conditions initiales a0 et b0 au jour 0.
(b) En utilisant la formule des probabilités totales, exprimer an+1 en fonction de an
et bn . Faire de même pour bn+1 .
2.5. EXERCICES SUR LES PROBABILITÉS CONDITIONNELLES 63

(c) En utilisant une écriture matricielle 2x2,écrire


 l’évolution du processus discret
an
(entre n et n + 1) pour le vecteur Xn =
bn
 
an
(d) Écrire le vecteur Xn = en fonction de n et du vecteur
bn
 
a0
X0 =
b0

(e) Écrire un programme en langage python qui permet de représenter les évolutions
de an et bn en fonction de n. Le fumeur va-t-il arrêter de fumer au bout de 10
jours ?
(f) Reprendre l’étude python précédente, avec les caractéristiques :
— S’il reste un jour sans fumer, alors il ne fume pas le lendemain avec une
probabilité de 0, 9.
— Par contre, s’il cède et fume un jour donné, la probabilité qu’il fume le
lendemain est de 0, 9.
(g) Reprendre l’étude de la chaîne de Markov, avec les caractéristiques :
— S’il reste un jour sans fumer, alors il ne fume pas le lendemain avec une
probabilité de 0, 9.
— Par contre, s’il cède et fume un jour donné, la probabilité qu’il fume le
lendemain est de 0, 6.
Faites une étude numérique comme dans les questions qui précédent, et déter-
miner les valeurs vers lesquelles semblent tendre an et bn .
Montrer que dans le cas de cette question, on peut décomposer la matrice M
(vous pourrez employer une démonstration par récurrence) sous la forme
 n
0, 9 0, 4
Mn = = P + (1/2)n · Q
0, 1 0, 6
avec  
0, 8 0, 8
P =
0, 2 0, 2
et  
0, 2 −0, 8
Q=
−0, 2 0, 8
Utiliser ce qui précède pour déterminer par le calcul les valeurs limites à l’infini de
an et bn .
Solution
(a) Comme le fumeur n’a pas encore décidé d’arrêter de fumer on doit avoir, au jour
initial 0, les valeurs a0 = 0 et b0 = 1.
(b) La formule des probabilités totales donne pour la probabilité an+1 de ne pas
fumer au jour n + 1 :

an+1 = 0, 6 × an + (1 − 0, 7) × bn = 0, 6 × an + 0, 3 × bn
64 CHAPITRE 2. PROBABILITÉS GÉNÉRALES

de même on trouve pour bn+1 :

bn+1 = (1 − 0, 6) × an + 0, 7 × bn = 0, 4 × an + 0, 7 × bn

(c) On peut récrire ce processus sous forme matricielle :


     
an+1 0, 6 0, 3 a
= · n
bn+1 0, 4 0, 7 bn

(d) La formule qui précède montre que


   2  
an 0, 6 0, 3 a
= · n−2
bn 0, 4 0, 7 bn−2

On obtient par récurrence :


   n  
an 0, 6 0, 3 a
= · 0
bn 0, 4 0, 7 b0

Comme on le voit, l’étude du problème se résume surtout à des questions ma-


tricielles, ce que permet facilement le langage python, avec la librairie numpy.
Le problème posé ici fait partie des processus dits de Markov. La matrice que
nous avons établie est dite stochastique (en fait anti-stochastique) car la somme
dans chaque colonne vaut toujours 1.
(e) Le programme python est le suivant :
1 # −∗− coding: utf−8 −∗−
2 # librairie utile ( calcul matriciel et graphisme)
3 import numpy as np
4 import matplotlib.pyplot as plt
5 #parametres initiaux
6 A = np.array([[0.6,0.3],[0.4,0.7]])
7 #A = np.array ([[0.9,0.1],[0.1,0.9]]) #question f
8 #A = np.array ([[0.9,0.4],[0.1,0.6]]) #question g
9 print(A)
10 n=10
11 a0=0
12 b0=1
13 an=a0
14 bn=b0
15 p1=[]
16 p2=[]
17 compteur=[]
18 p1.append(a0)
19 p2.append(b0)
20 compteur.append(0)
21 #calcul des puissances successives de la matrice A
22 B = A
23 for i in range(1,n+1):
24 compteur.append(i)
2.5. EXERCICES SUR LES PROBABILITÉS CONDITIONNELLES 65

25 B = np.dot(A,B) # la sortie de boucle B donne la matrice A^n


26 ann=B[0][0] *an+B[0][1] *bn
27 bnn=B[1][0] *an+B[1][1] *bn
28 an=ann
29 bn=bnn
30 p1.append(an)
31 p2.append(bn)
32 print(p1)
33 print(p2)
34 #aspects graphiques
35 plt.plot(compteur,p1,’r’,label="ne pas fumer")
36 plt.plot(compteur,p1,’k+’)
37 plt.plot(compteur,p2,’k--’,label=" fumer")
38 plt.plot(compteur,p2,’ko’)
39 plt.title("evolution discrete temporelle")
40 plt.grid()
41 plt.xlabel(’entier n’)
42 plt.ylabel(’probabilités an et bn’)
43 plt.legend()
44 plt.savefig(’temps2.png’)
45 plt.show()

On notera que les trois vecteurs p1, p2 et compteur contiennent 11 valeurs


(indicées de 0 à 10). On affiche p1 en fonction de compteur, ce qui représente
l’évolution de la probabilité de ne pas fumer. De même, on affiche p2 en fonction
de compteur, ce qui représente l’évolution de la probabilité de fumer au cours
du temps discrétisé. La figure 2.11 rend compte de ces valeurs.
On constate que la probabilité de fumer diminue avec le temps et atteint une
valeur minimale limite d’environ 0,55. Il n’y a donc pas de certitude que le
fumeur va cesser de fumer au bout de plusieurs jours.

Figure 2.11 – Cas du fumeur pour les paramètres 0.6 et 0.7


66 CHAPITRE 2. PROBABILITÉS GÉNÉRALES

(f) La formule des probabilités totales donne cette fois pour la probabilité de ne
pas fumer an+1 le jour n + 1 :

an+1 = 0, 9 × an + (1 − 0, 9) × bn = 0, 9 × an + 0, 1 × bn

de même on trouve

bn+1 = (1 − 0, 9) × an + 0, 9 × bn = 0, 1 × an + 0, 9 × bn

Soit sous forme matricielle, à l’ordre n


   n  
an 0, 9 0, 1 a
= · 0
bn 0, 1 0, 9 b0
La figure 2.12 rend compte du processus avec les valeurs 0.9 et 0.9 initiales. On
constate que la probabilité de fumer diminue avec le temps et atteint une valeur
minimale limite d’environ 0,50. De même la probabilité de ne pas fumer semble
converger vers cette valeur de 50 %. Il n’y a donc pas de certitude que le fumeur
va cesser de fumer au bout de plusieurs jours.

Figure 2.12 – Cas du fumeur pour les paramètres 0.9 et 0.9

(g) Sous forme matricielle, à l’ordre n on a cette fois :


   n  
an 0, 9 0, 4 a
= · 0
bn 0, 1 0, 6 b0
La figure 2.13 rend compte du processus avec les valeurs 0.9 et 0.6 initiales. On
constate que la probabilité de fumer diminue avec le temps et atteint une valeur
minimale limite d’environ 0,2 et de 0,8 pour la probabilité de ne pas fumer. Il n’y
a donc pas de certitude que le fumeur va cesser de fumer au bout de plusieurs
jours.
2.5. EXERCICES SUR LES PROBABILITÉS CONDITIONNELLES 67

Figure 2.13 – Cas du fumeur pour les paramètres 0.9 et 0.6

Pour l’aspect matriciel de la question, on remarque d’abord que :


 
0, 9 0, 4 1
M= =P + ·Q
0, 1 0, 6 2

Par ailleurs, un calcul direct montre que P 2 = P , Q2 = Q et


 
0 0
P ·Q=Q·P =
0 0

On peut dès lors faire la démonstration par récurrence, avec l’entier n ≥ 1 :


1
— On a vérifié que M = P + Q (cas n=1)
2  n
1
— On suppose vraie la relation M n = P + Q
 2
 n   
1 1
On calcule M n+1 = M n · M = P + Q · P + Q ce qui donne :
2 2
 n  n+1
1 1 1
M n+1 = P 2 + Q·P + P ·Q+ Q2
2 2 2
grâce aux propriétés des matrices P et Q, on obtient bien la relation
 n+1
1
M n+1 = P + Q
2
Ce qui prouve par récurrence la propriétés recherchée.
On peut donc écrire :
   n      n  
an 0, 9 0, 4 0 0 1 0
= · =P· + Q·
bn 0, 1 0, 6 1 1 2 1
68 CHAPITRE 2. PROBABILITÉS GÉNÉRALES

Soit encore
         
an 0, 8 0, 8 0 0, 2 −0, 8 0
= · + (1/2)n ·
bn 0, 2 0, 2 1 −0, 2 0, 8 1

En conclusion, on obtient

an = 0, 8 − 0, 8 × (1/2)n

dont la limite est de 0,8 si n tend vers l’infini.


De la même façon
bn = 0, 2 + 0, 8 × (1/2)n
a pour limite 0,2 si n tend vers l’infini.
Chapitre 3

Lois de probabilité discrètes

3.1 Variables aléatoires


3.1.1 Une définition
On appelle variable aléatoire réelle, définie sur l’univers Ω, une application X de
l’ensemble Ω dans R, telle que, pour tout intervalle I de R, X −1 (I) = {ω ∈ Ω|X(ω) ∈ I}
soit un événement de Ω.
On dit que
— X est une variable aléatoire discrète finie si X(Ω) est un ensemble fini.
— X est une variable aléatoire discrète infinie si X(Ω) est un ensemble dénombrable.
— X est une variable aléatoire continue si X prend toutes les valeurs réelles possibles
entre des limites données.
Prenons comme exemple un dé équilibré à six faces. On définit X : Ω → R comme
— X(ω) = 1, si le numéro obtenu par jet est pair ;
— X(ω) = 0, si le numéro obtenu par jet est impair.
X est une variable aléatoire (discrète finie).
Prenons comme autre exemple le lancer de deux dés (supposés discernables) à six faces,
en notant X la variable somme des deux chiffres obtenus :
— En notant Ω l’ensemble des événements, on constate que
X(Ω) = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
— En notant (a, a) les sorties des deux dés, on a X −1 (2) = (1, 1) ;

— En notant (a, a) les sorties des deux dés, on a


X −1 ({11, 12}) = (5, 6); (6, 5); (6, 6)
;

3.1.2 Une façon plus axiomatique de voir les choses


Vous allez certainement rencontrer dans la littérature la notion d’espace probabilisable
et d’espace probabilisé, à la racine de la notion de probabilité. Sans proposer beaucoup
d’exercices sur la question, voici quelques définitions utiles :

69
70 CHAPITRE 3. LOIS DE PROBABILITÉ DISCRÈTES

Tribu
Une tribu TΩ définie sur un ensemble univers Ω est une partie de P (Ω) (l’ensemble de
toutes les parties de Ω) qui vérifie les axiomes :
— Ω ∈ TΩ ;
— Si A ∈ TΩ , son complémentaire A ∈ TΩ ;
— La tribu TΩ est stable par union dénombrable.
Une tribu TΩ est un ensemble de sous-ensembles de Ω.

Espace probabilisable
On se donne TΩ une tribu définie sur l’ensemble univers Ω. On dit que (Ω, TΩ ) est un
espace d’événements, ou espace probabilisable. On appelle événements les éléments de la
tribu.

Espace probabilisé
Un espace probabilisé est un espace probabilisable (Ω, TΩ ) muni d’une mesure de
probabilité P (ou probabilité), application définie sur TΩ , telle que :
— ∀A ∈ TΩ , P (A) ∈ [0, 1] ;
— P (Ω) = 1 ;
— ∀(A, B) ∈ TΩ2 , A ∩ B = ∅ → P (A ∪ B) = P (A) + P (B).
On note (Ω, TΩ , P ) l’espace probabilisé, construit à partir des trois axiomes précédents
dits de Kolmogorov.

Probabilité P
On retrouve alors les propriétés habituelles de la probabilité P pour l’espace probabilisé
(Ω, TΩ , P ) :
— P (A) = 1 − P (A) ;
— P (∅) = 0 ;
— ∀(A, B) ∈ TΩ2 , P (A ∪ B) = P (A) + P (B) − P (A ∩ B) ;

— ∀(A, B) ∈ TΩ2 , A ⊂ B → P (A) ≤ P (B).

3.1.3 Loi de probabilité d’une variable aléatoire discrète


On appelle loi de probabilité de la variable aléatoire discrète X l’ensemble des couples
(xi , pi ) avec xi ∈ X(Ω) et pi = P (X = xi ).
Dans le cas d’une variable aléatoire discrète finie, on peut donner la loi de probabilité,
ou distribution, sous forme d’un tableau.
Dans le cas d’une variable aléatoire discrète dénombrable, on peut donner la loi de
probabilité sous forme d’une fonction f .
La loi est forcément normalisée à 1, c’est-à-dire que

P (X = xi ) = 1
i
3.2. DES EXEMPLES DE LOIS DISCRÈTES 71

3.1.4 Fonction de répartition


La fonction de répartition de la variable aléatoire X est l’application de R dans R
définie par
F (x) = P (X ≤ x)
La fonction de répartition possède les propriétés suivantes :
— ∀ x ∈ R, F (x) ∈ [0, 1] ;
— F (x) est une fonction croissante ;
— ∀(a, b) ∈ R2 , P (a < X ≤ b) = F (b) − F (a).

On calculera dans les exercices la fonction de répartition en additionnant toutes les


probabilités non nulle pour les valeurs de la variable X inférieures ou égale à x.

3.1.5 Caractéristiques d’une variable aléatoire discrète


On peut caractériser une variable discrète X par plusieurs paramètres dont :
n
1. L’espérance E(X) = xi × P (X = xi ) si X est une variable discrète finie.
i=1

+∞
2. L’espérance E(X) = xi ×P (X = xi ) si X est une variable discrète dénombrable.
i=1
1
3. La médiane de X est la valeur m de la variable telle que P (X ≤ m) ≥ et
2
1
P (X ≥ m) ≥ .
2
4. La variance de X définie comme : V (X) = E(X 2 ) − E(X)2

5. l’écart-type de X défini comme : σX = V (X).
La variance de la variable aléatoire X a la propriété suivante (a, b ∈ R) :

V (aX + b) = a2 × V (X)

L’espérance de deux variables aléatoires X et Y a la propriété de linéarité (a, b ∈ R) :

E(aX + bY ) = a × E(X) + b × E(Y )

3.2 Des exemples de lois discrètes


3.2.1 La loi uniforme discrète
Cette loi correspond par exemple au tirage équiprobable d’une face d’un dé à six faces.
On représente la loi sur la figure 3.1, dans le cas de dés à 6 et 12 faces.
La variable aléatoire discrète finie X suit la loi uniforme sur les entiers [1, n] lorsque
pour k ∈ [1, n] on ait :
1
P (X = k) =
n
72 CHAPITRE 3. LOIS DE PROBABILITÉ DISCRÈTES

L’espérance de la variable aléatoire X est


n
 n+1
E(X) = k × P (X = k) =
2
k=1

et sa variance
n2 − 1
V (X) = E(X 2 ) − E(X)2 =
12

Figure 3.1 – Loi uniforme discrète dans les cas où n = 6 (à gauche) et n = 12 (à droite) :
exemple du lancer équiprobable d’un dé à six faces et d’un dé à douze faces.

Remarquons qu’on peut aussi définir une loi uniforme discrète sur un intervalle d’entiers
plus général [a, b] avec a < b.

3.2.2 La loi de Bernoulli B(1, p)


Il s’agit de la loi associée à un unique tirage où la probabilité de succès est de p et celle
de l’échec de q = 1 − p. On considère alors que la variable aléatoire discrète finie X suit la
loi de Bernoulli de paramètre p si :

p si x=1
P (X = x) =
1 − p si x=0

L’espérance de la variable aléatoire X est


1

E(X) = k × P (X = k) = p
k=0

et sa variance
V (X) = E(X 2 ) − E(X)2 = p × (1 − p) = p × q

3.2.3 La loi binomiale B(n, p)


On dit que la variable aléatoire discrète finie X suit la loi binomiale de paramètres n
et p si l’expérience est une suite de n expériences de Bernoulli indépendantes et chacune
de paramètre p. On considère alors que X est le nombre k de succès parmi n essais, ce qui
implique que X prend sa valeur entière dans l’intervalle [0, n].
3.2. DES EXEMPLES DE LOIS DISCRÈTES 73

La loi de Bernoulli est simplement la loi binomiale B(1, p). On a représenté sur la figure
3.2 les histogrammes de probabilité de B(40, 0.1) et B(40, 0.5).
La probabilité P (X = k), avec k ∈ [0, n] est donnée par :

P (X = k) = Cnk × pk × (1 − p)n−k

L’espérance de la variable aléatoire X est


n

E(X) = k × P (X = k) = n × p
k=0

et sa variance

V (X) = E(X 2 ) − E(X)2 = n × p × (1 − p) = n × p × q

Figure 3.2 – Histogrammes de probabilité des lois binomiales B(40, 0.1) (à gauche) et
B(40, 0.5) (à droite). On notera les maximums atteints par les deux distributions, autour
de 4 et de 20 (valeurs des espérances).

3.2.4 La loi hypergéométrique H(N, n, p)


On dit que la variable aléatoire discrète finie X suit la loi hypergéométrique de para-
mètres N , n et p si l’expérience revient à tirer simultanément, dans une urne contenant N
boules (avec une proportion p d’une couleur A et 1 − p d’une autre couleur B), un total de
n ≤ N boules. La variable aléatoire X représente le nombre de boules de couleur A.
La probabilité P (X = k) s’écrit :

k × C n−k
CN p N (1−p)
P (X = k) = n
CN

L’espérance de la variable aléatoire X est


N

E(X) = k × P (X = k) = n × p
k=0
74 CHAPITRE 3. LOIS DE PROBABILITÉ DISCRÈTES

et sa variance
N −n
V (X) = E(X 2 ) − E(X)2 = np(1 − p) ×
N −1
On admettra ici que si n est petit devant N alors la loi hypergéométrique H(N, n, p)
tend vers une loi binomiale B(n, p). On a représenté les probabilités associées aux lois
hypergéométriques H(100, 40, 0.4) et H(100, 40, 0.8) sur la figure 3.3.

Figure 3.3 – Histogrammes de probabilité des lois hypergéométriques H(100, 40, 0.4) (à
gauche) et H(100, 40, 0.8) (à droite). On notera les maximums atteints par les deux distri-
butions, autour de 16 et de 32 (valeurs des espérances).

3.2.5 La loi géométrique G(p)


La variable aléatoire discrète X suit la loi géométrique G(p) si on répète indéfiniment
et de façon indépendante une épreuve de Bernoulli de probabilité de succès p, et que X
représente le rang du premier succès. Les épreuves sont indépendantes les unes des autres.
On a représenté les probabilités associées à la loi géométrique G(0.3) sur la figure 3.4.
La probabilité P (X = k) s’écrit, avec k ≥ 1 :

P (X = k) = p × (1 − p)k−1
L’espérance de la variable aléatoire X est
1
E(X) =
p
et sa variance
1−p
V (X) = E(X 2 ) − E(X)2 =
p2
3.2. DES EXEMPLES DE LOIS DISCRÈTES 75

Figure 3.4 – Histogramme de probabilité de la loi géométrique G(0.3).

3.2.6 La loi de Pascal P a(r, p)


La variable aléatoire discrète X suit la loi de Pascal P a(r, p) si on répète indéfiniment
et de façon indépendante une épreuve de Bernoulli de probabilité de succès p sachant que
X représente le rang du succès numéro r. Les épreuves sont indépendantes les unes des
autres, et si r = 1 on retrouve la loi géométrique G(p).
On a représenté les probabilités associées aux lois de Pascal P a(10, 0.4) et P a(10, 0.5)
sur la figure 3.5.
La probabilité P (X = k) s’écrit, avec k ≥ r :

r−1
P (X = k) = Ck−1 × pr × (1 − p)k−r

Cette loi représente la probabilité que r succès soient obtenus en k essais (avec k ≥ r).
L’espérance de la variable aléatoire X est
r
E(X) =
p

et sa variance
r(1 − p)
V (X) = E(X 2 ) − E(X)2 =
p2

Figure 3.5 – Histogrammes de probabilité des lois de Pascal P a(10, 0.4) et P a(10, 0.5).
76 CHAPITRE 3. LOIS DE PROBABILITÉ DISCRÈTES

3.2.7 La loi de Poisson P (m)


La variable aléatoire discrète X suit la loi de Poisson P (m), de paramètre réel m > 0,
si X prend ses valeurs dans l’ensemble des entiers naturels N avec la probabilité :

mk
P (X = k) = e−m ×
k!

L’espérance de la variable aléatoire X est

E(X) = m

et sa variance
V (X) = E(X 2 ) − E(X)2 = m
On a représenté les probabilités associées aux lois de Poisson P (5) et P (20) sur la figure
3.6. La loi de Poisson modélise le nombre d’apparitions de phénomènes considérés comme
rares dans une série d’événements en nombre infini (en pratique très grand).
On considère qu’on peut approcher une loi binomiale B(n, p) par une loi de Poisson
P (m), avec m = n × p, si deux conditions sont remplies (on en trouve parfois d’autres
approchantes dans la littérature, l’essentiel étant que n soit grand, p petit et que le produit
n × p soit stable) :

si n > 50
B(n, p) ≈ P (m)
si m = n × p < 5

Figure 3.6 – Histogrammes de probabilité des lois de Poisson P (5) (à gauche) et P (20)
(à droite).
3.2. DES EXEMPLES DE LOIS DISCRÈTES 77

3.2.8 La loi de Zipf


La loi de Zipf est une loi empirique, qui a été mise en évidence par exemple dans la
répartition des fréquences des mots les plus utilisés dans un long texte.
On observe que la fréquence d’un mot de rang n (dans un texte relativement long) est
1 1
proportionnelle à ou à une puissance de .
n n
Remarquons tout de suite que le nombre de mots doit être limité, car la série
+∞
 1
=∞
n
n=1

est divergente.
Dans cette première présentation, on peut écrire la loi de Zipf comme :
C
pk =
k
Où C est une constante et où k prend ses valeurs dans un intervalle entier limité [1, n].
De façon plus générale, on donne la loi de Zipf dépendant de la puissance s :

1 1
pk =
Hn,s k s


n
 1
Hn,s =
ps
p=1

On vérifie facilement que si n est fixé et s > 0 la loi de Zipf est normalisée à 1 :

n n
1 1 1 1
× s = n × =1
Hn,s k  1 ks
k=1 k=1
s
p=1 p

La loi de Zipf est un cas particulier des lois de puissance (Mandelbrot), que l’on ren-
contre souvent en lexicographie et dans tous les domaines où une quantité peut varier sur
de nombreuses décades, permettant un classement sur plusieurs rangs. Donnons comme
exemple la population des 35 000 communes en France, qui varie d’environ 2 000 000
(Paris) à .... 0, pour les villages vides.
Cette loi est peu connue, laissons le lecteur vérifier que si n = 3 et s = 1, on trouve

p1 = 6/11, p2 = 3/11, p3 = 2/11

La figure 3.7 montre le cas de la loi de Zipf de paramètres n = 6 et s = 1.


78 CHAPITRE 3. LOIS DE PROBABILITÉ DISCRÈTES

Figure 3.7 – Histogramme de probabilité de la loi empirique de Zipf, avec les paramètres
n = 6 et s = 1. Il n’y a que 6 valeurs possibles, dont la somme est normalisée à 1.

3.3 Exercices sur les lois discrètes


1. Espérance et variance des lois
(a) Retrouver l’expression de l’espérance et de la variance dans le cas de la loi
discrète uniforme pour les entiers dans l’intervalle [1, n].
On rappelle les résultats utiles :
n
 n(n + 1)
p=
2
p=1

et
n
 n(n + 1)(2n + 1)
p2 =
6
p=1

(b) Retrouver l’expression de l’espérance et de la variance dans le cas de la loi


discrète uniforme pour les entiers dans l’intervalle des entiers [a, b].
(c) Retrouver l’expression de l’espérance et de la variance dans le cas de la loi de
Bernoulli B(1, p).
(d) Retrouver l’expression de l’espérance et de la variance dans le cas de la loi
binomiale B(n, p).
(e) Retrouver l’expression de l’espérance et de la variance dans le cas de la loi
géométrique G(p). On pourra utiliser les trois résultats, si x ∈] − 1, +1[ :
+∞
 1
xk =
1−x
k=0

et  +∞ 
 +∞

d k 1
x = k × xk−1 =
dx (1 − x)2
k=0 k=1
et  +∞ 
 +∞

d2 k 2
x = k(k − 1) × xk−2 =
dx2 (1 − x)3
k=0 k=2
3.3. EXERCICES SUR LES LOIS DISCRÈTES 79

(f) Retrouver l’expression de l’espérance et de la variance dans le cas de de la loi


de Poisson P (m). On pourra utiliser le développement, valable pour tout x :
+∞ p
 x
exp(x) =
p!
p=0

Solution
1
(a) Dans le cas d’une variable aléatoire X suivant une loi uniforme on a pk =
n
avec k ∈ [1, n] , ce qui donne
n
 n
1 1 n(n + 1) n+1
E(X) = k × pk = k= × =
n n 2 2
k=1 k=1

Pour la variance on trouve :


n  2
1  2 n+1
V (X) = E(X 2 ) − E(X)2 = × k −
n 2
k=1

On obtient
(n + 1)(2n + 1) n2 + 2n + 1
V (X) = −
6 4
Soit enfin
n2 − 1
V (X) =
12
(b) On reprend le raisonnement précédent pour une variable aléatoire X suivant
1
une loi uniforme, on a pk = avec k ∈ [a, b] , ce qui donne :
b−a+1
b
  b
1 a+b
E(X) = k × pk = k=
b−a+1 2
k=a k=a

Pour la variance on trouve :

 b  2
2 1 2 a+b
V (X) = E(X ) − E(X) = × k2 −
b−a+1 2
k=a

soit encore
(a + b)(2b + a) a2 + 2ab + b2 b2 − a 2
V (X) = − =
6 4 12

(c) Dans le cas de la loi de Bernoulli il n’y a que deux états possibles et on peut
effectuer le calcul directement :

p si x=1
P (X = x) =
1 − p si x=0
80 CHAPITRE 3. LOIS DE PROBABILITÉ DISCRÈTES

L’espérance de la variable aléatoire X suivant la loi de Bernoulli est donc :

E(X) = 0 × (1 − p) + 1 × p = p

et sa variance :

V (X) = E(X 2 ) − E(X)2 = 02 × (1 − p) + 12 × p − p2 = p(1 − p)

(d) Dans le cas de la loi binomiale B(n, p), on doit évaluer pour l’espérance :
n
 n

E(X) = k × pk = k × Cnk pk (1 − p)n−k
k=0 k=0

Ce que l’on peut récrire (puisque dans le cas où k = 0 le terme correspondant


est nul) :

n
  n
n! (n − 1)!
E(X) = k× ×pk (1−p)n−k = n ×pk (1−p)n−k
k!(n − k)! (k − 1)!(n − k)!
k=1 k=1

Soit encore
n

k−1 k−1
E(X) = n × p Cn−1 p (1 − p)n−k
k=1

En reprenant les indices :


n−1

m
E(X) = n × p Cn−1 pm (1 − p)n−m−1
m=0


n−1
et en utilisant l’identité binomiale (x + y)n−1 = m xm y n−1−m , on trouve
Cn−1
m=0
finalement (avec x = p et y = 1 − p) :

E(X) = n × p × (p + 1 − p)n−1 = n × p

Pour la variance, on doit d’abord calculer


n
 n

E(X 2 ) = k 2 × pk = k 2 × Cnk pk (1 − p)n−k
k=0 k=0

C’est à dire aussi


n
 n

E(X 2 ) = (k 2 −k+k)×Cnk pk (1−p)n−k = (k 2 −k)×Cnk ×pk (1−p)n−k +E(X)
k=0 k=0

En employant la même astuce que dans le calcul de l’espérance, on trouve


n
 n(n − 1)k(k − 1) (n − 2)!
E(X 2 ) = × pk (1 − p)n−k + E(X)
k(k − 1) (k − 2)!(n − k)!
k=2
3.3. EXERCICES SUR LES LOIS DISCRÈTES 81

Soit encore
n

k−2
E(X 2 ) = n(n − 1)p2 Cn−2 × pk−2 (1 − p)n−2−k+2 + E(X)
k=2

Soit finalement
E(X 2 ) = n(n − 1)p2 + E(X)
D’où la variance

V (X) = E(X 2 ) − E(X)2 = n(n − 1)p2 + np − n2 p2 = np(1 − p)

(e) Dans le cas de la loi géométrique, on part de la définition de l’espérance :


+∞
 +∞

E(X) = k × P (X = k) = p × (1 − p)k−1 × k
k=1 k=1

Ce qui donne, en utilisant les indications de la question :


+∞
 1 1
E(X) = p k × (1 − p)k−1 = p × =
p2 p
k=1

De même, on calcule la variance, en commençant par l’astuce suivante :

E(X 2 ) = E(X(X − 1) + X) = E(X(X − 1)) + E(X)


+∞

E(X 2 ) = P (X = k) × k(k − 1) + E(X)
k=1
En utilisant la dernière identité vue dans la question :

+∞
 1 2p(1 − p) 1
E(X 2 ) = p(1 − p) k(k − 1)(1 − p)k−2 + = +
p p3 p
k=1
Soit enfin
2p(1 − p) 1 1 1−p
V (X) = E(X 2 ) − E(X)2 = + − 2 =
p3 p p p2

(f) Dans le cas de la loi de Poisson, de paramètre m, on part de la définition de


l’espérance :
+∞
 +∞
 mk × exp(−m)
E(X) = P (X = k) × k = ×k
k!
k=0 k=0

Soit encore (on peut démarrer la somme à k = 1, car le premier terme est nul) :

+∞
 +∞

mk−1 mp
E(X) = m × exp(−m) × = m × exp(−m) ×
(k − 1)! p!
k=1 p=0
82 CHAPITRE 3. LOIS DE PROBABILITÉ DISCRÈTES

On reconnaît dans la somme le développement de exp(+m), soit finalement :

E(X) = m

La variance se calcule comme d’habitude :


+∞

V (X) = E(X 2 ) − E(X)2 = P (X = k) × k 2 − m2
k=0

Soit (on peut commencer la somme à k = 1 )


+∞
 mk
V (X) = k × exp(−m) × − m2
(k − 1)!
k=1

Soit encore
+∞
 mk−1
V (X) = m × exp(−m) k − m2
(k − 1)!
k=1
On utilise le développement de l’exponentielle :
+∞ p
 x
exp(x) =
p!
p=0

Ce qui donne, pour la variance :


d
V (X) = m × exp(−m) [m × exp(m)] − m2
dm
Soit enfin
V (X) = m × (m + 1) − m2 = m
2. Loi géométrique
Un scanner a une probabilité valant 0,01 de produire une page illisible. On veut
scanner page par page un document faisant un total de N = 10 pages.
(a) Justifier l’emploi de la loi géométrique dans cet exercice, pour la variable aléa-
toire X = position de la première page scannée et illisible. Préciser son para-
mètre p.
(b) Calculer la probabilité que le document soit scanné correctement pour les 10
pages.
(c) Calculer la probabilité pour qu’un autre document soit scanné correctement
pour 50 pages.
Solution
(a) Le scan de chaque page peut être considéré comme indépendant de celui des
autres, avec une même probabilité p de produire un résultat illisible. La loi géo-
métrique G(p) avec p = 0, 01 modélise l’apparition de la première page illisible.
Si par exemple la page illisible apparaît en position 11, il y a 10 pages scannées
correctement.
3.3. EXERCICES SUR LES LOIS DISCRÈTES 83

(b) On cherche la probabilité P (X ≥ 11), ce qui donne, avec la loi géométrique de


paramètre p = 0, 01 :
+∞

P (X ≥ 11) = p × (1 − p)i−1
i=11

On peut utiliser la somme d’une série géométrique de raison 0 < q < 1 :


+∞
 1
qi =
1−q
i=0

Ce qui donne :
+∞
 (1 − p)10 p(1 − p)10
P (X ≥ 11) = p × (1 − p)i = p × =
1 − (1 − p) p
i=10

Ce qui donne finalement

P (X ≥ 11) = (1 − p)10 ≈ 90, 4 %

(c) On reprend le raisonnement précédent pour calculer


+∞

P (X ≥ 51) = p × (1 − p)i−1
i=51

Ce qui donne
+∞

P (X ≥ 51) = p × (1 − p)i = (1 − p)50 ≈ 60, 5 %
i=50

3. Loi binomiale
On dispose d’une pièce de monnaie. On lance 2N fois cette pièce, et on note la
séquence de piles et de faces obtenue. On définit la variable aléatoire X = nombre
de piles obtenus sur un total de 2N lancers.
(a) Justifier le fait que la variable aléatoire X suive bien une loi binomiale, dont il
faudra préciser les paramètres.
(b) Exprimer la probabilité P (X = N ) en fonction de N .
(c) Écrire un programme python qui permet de représenter graphiquement la pro-
babilité précédente en fonction de N qui varie de 1 à 30.
(d) Exprimer la probabilité P (X = N − 5) en fonction de N .
(e) Écrire un programme python qui permet de représenter graphiquement la pro-
babilité précédente en fonction de 2N , avec N qui varie de 5 à 400.
84 CHAPITRE 3. LOIS DE PROBABILITÉ DISCRÈTES

Solution
(a) Les lancers sont indépendants les uns des autres et il s’agit d’étudier X le nombre
de piles obtenus, succès parmi 2N lancers, avec une probabilité p = 1/2 à
chaque fois. La variable X suit dont une loi binomiale de paramètres m = 2N
et p = 1/2 : B(2N, p).
(b) On peut écrire de manière générale, pour k succès :
k
P (X = k) = C2N × (1/2)k × (1/2)2N −k = C2N
k
× (1/2)2N

Si on a k = N , cela implique que

N (2N )!
P (X = N ) = C2N × (1/2)2N =
22N × (N !)2

(c) Le programme python ci-dessous permet d’obtenir la courbe de la figure 3.8.


Cette courbe représente la variation de la probabilité P (X = N ) pour 2N
lancers, avec l’augmentation de N .
1 #loi binomiale − lancer de pieces 2N fois
2 #obtention de N piles − loi binomiale
3 #importation des librairies
4 import math
5 import matplotlib.pyplot as plt
6 #conditions initiales
7 NN=[]
8 proba=[]
9 def CNN2(n):
10 return math.comb(2*n,n)
11 #calcul numerique
12 for j in range(1,30):
13 prob = CNN2(j)*(1/2)**(2*j)
14 print(prob,2*j)
15 proba.append(prob)
16 NN.append(j)
17 #affichage graphique
18 plt.plot(NN,proba,"ko-",label="proba P(X = N) ")
19 plt.title("proba P(X=N) pour 2N lancers")
20 plt.xlabel(’N piles’)
21 plt.ylabel(’proba’)
22 plt.grid()
23 plt.legend()
24 plt.show()

(d) La probabilité P (X = N − 5) s’écrit

N −5 (2N )!
P (X = N − 5) = C2N × (1/2)2N =
22N × (N − 5)! × (N + 5)!

(e) On peut reprendre le programme précédent de façon à obtenir la courbe de la


figure 3.9, qui représente la probabilité P (X = N − 5) en fonction cette fois de
2N , nombre total de lancers.
3.3. EXERCICES SUR LES LOIS DISCRÈTES 85

Figure 3.8 – Probabilité P (X = N ) d’avoir N piles pour 2N lancers consécutifs de la


même pièce. On retrouve, en particulier, que pour N = 1, la probabilité est de 1/2.

Figure 3.9 – Probabilité P (X = N − 5) d’avoir N − 5 piles pour 2N lancers consécutifs


de la même pièce. On remarque que cette fois la probabilité passe par un maximum.

4. Loi hypergéométrique
On dispose de 100 billes qui se partagent en 60 rouges et 40 bleues. On fait un tirage
de 50 billes sans remise.
(a) On note X la variable représentant le nombre de billes bleues obtenues. Décrire
les paramètres de la loi discrète qui régit X.
(b) Calculer la probabilité qu’après 50 tirages, on ait tiré exactement 21 billes bleues.
86 CHAPITRE 3. LOIS DE PROBABILITÉ DISCRÈTES

(c) Calculer la probabilité qu’après 50 tirages, on ait tiré au moins 21 billes bleues.
Solution
(a) La variable aléatoire X suit la loi hypergéométrique de paramètres N = 100,
n = 50 et p = 40/100. La probabilité P (X = k) s’écrit :
k × C 50−k
C40 60
P (X = k) = 50
C100

(b) Dans cette question on veut calculer


21 × C 29
C40 40! 60! 50! 50!
60
P (X = 21) = 50 = ≈ 14, 89 %
C100 21! 29! 19! 31! 100!

Le calcul a été réalisé avec un tableur, on peut aussi utiliser un logiciel mathé-
matique, voire une application performante de téléphone.
(c) Cette fois la probabilité recherchée s’écrit (le calcul a été fait au tableur) :
40
 k × C 50−k
C40 60
P (X ≥ 21) = 50 ≈ 41, 92 %
C100
k=21

5. Loi de Poisson
Le tableau ci-dessous donne, sur une année ouvrable de 200 jours, le nombre de
jours avec un nombre X d’incidents techniques dans une usine. Les incidents sont
considérés indépendants les uns des autres.
Nombre X d’incidents 0 1 2 3 4 5
nombre de jours 86 80 24 6 3 1
(a) Quel est le nombre moyen d’incidents par jour ?
(b) On modélise la distribution des incidents par une loi de Poisson. Justifier et
donner le paramètre de cette loi.
(c) Calculer les probabilités associées aux valeurs de X selon la loi de Poisson.
Comparer aux valeurs effectivement observées. On pourra faire un histogramme.
(d) Comparer les valeurs effectivement observées avec une loi binomiale adéquate,
que l’on précisera. On pourra faire un histogramme.
(e) Pourquoi a-t-on deux modèles : binomial et de Poisson ? Comment choisir entre
l’un et l’autre ?
Solution
(a) On calcule l’espérance de X et on trouve :
6
 0 × 86 5×1
E(X) = x i × pi = + ... + = 0, 815
200 200
i=1

Cette espérance correspond au nombre moyen d’incidents par jour.


3.3. EXERCICES SUR LES LOIS DISCRÈTES 87

(b) On peut chercher à modéliser le phénomène avec une loi de Poisson de para-
mètre m = E(X) = 0, 815. La loi de Poisson est la loi des événements rares et
indépendants. On utilise donc :

0, 815k
P (X = k) = exp(−0, 815) ×
k!

(c) Cela donne le tableau de valeurs ci-dessous, on voit que, sans être parfait, l’ac-
cord est assez bon.
Nombre X d’incidents 0 1 2 3 4 5
nombre de jours 86 80 24 6 3 1
Probabilité brute 0,43 0,40 0,12 0,030 0,015 0,0050
Loi de Poisson 0,443 0,361 0,147 0,040 0,0081 0,0013
La figure 3.10 permet de comparer directement les deux histogrammes, selon la
loi de Poisson et selon les données expérimentales.

Figure 3.10 – Comparaison entre la loi de Poisson P (m = 0, 815) et les données brutes.

(d) On peut aussi chercher à modéliser le phénomène par une variable aléatoire
qui suit la loi binomiale B(n = 200; p = 0, 815/200), qui correspond à des
événements indépendants, avec 200 essais et une moyenne m = 0, 815 comme
attendu. On obtient alors le tableau de valeurs ci-dessous, qui confirme qu’on
peut modéliser le phénomène aussi bien par une loi de Poisson P(m = 0, 815)
que par une loi binomiale B(200; 0, 004075).
La figure 3.11 confirme le parfait accord entre les distributions binomiale et de
Poisson.
88 CHAPITRE 3. LOIS DE PROBABILITÉ DISCRÈTES

Nombre X d’incidents 0 1 2 3 4 5
nombre de jours 86 80 24 6 3 1
Probabilité brute 0,43 0,40 0,12 0,030 0,015 0,0050
Loi de Poisson 0,443 0,361 0,147 0,040 0,0081 0,0013
Loi binomiale 0,442 0,362 0,147 0,040 0,0080 0,0013

Figure 3.11 – Comparaison entre la loi de Poisson P (m = 0, 815) et la loi binomiale


B(n, p). Comme n = 200 et p = 0, 004075, on a bien m = n × p = 0, 815.

(e) On peut considérer ici que la loi de Poisson P (m = 0, 815) est un cas limite de la
loi binomiale B(200; 0, 004075), puisqu’on est bien dans le cas de l’approximation
classique :

car n =200 > 50
B(n, p) ≈ P (m)
car m = n.p = 0,815 < 5

6. Fraude et loi binomiale


Un mathématicien fraudeur dans les transports en commun veut estimer son gain
s’il ne paye jamais son billet. Le billet a un prix de 10 euros et l’amende est de 100
euros. Il y a 20 jours dans un mois ouvrable, donc 40 trajets par mois. Les contrôles
sont supposés indépendants, tous avec une probabilité p de se produire. On définit la
variable X = nombre de trajets contrôlés.
(a) Définir la loi suivie par la variable X.
(b) En définissant une variable aléatoire Y qui modélise le gain/coût des trajets
mensuels, calculer le gain/coût si p = 5 %.
(c) Calculer la probabilité p minimale pour que l’espérance E(Y ) soit systémati-
quement négative.
3.3. EXERCICES SUR LES LOIS DISCRÈTES 89

(d) Représenter par une courbe l’évolution de E(Y ) en fonction de p. Quelle doit
être la politique de la compagnie de transport ? Il est possible de jouer sur la
valeur de l’amende.
Solution
(a) La variable aléatoire X représente un nombre de succès parmi N = 40 essais
indépendants, la probabilité de succès p étant constante. X suit donc une loi
binomiale de paramètres N = 40 et p fixée.
(b) On peut définir la variable aléatoire

Y = −X × 100 + (40 − X) × 10 = −110 × X + 400

qui représente le gain/coût pour le fraudeur.


On recherche l’espérance E(Y ) pour estimer le gain/coût mensuel. Le calcul
donne facilement :

E(Y ) = 400 − 110 × E(X) = 400 − 110 × N × p = +180

(c) En prenant désormais p comme variable, on peut écrire l’espérance de Y

E(Y ) = 400 − 4400 × p ≤ 0

soit la valeur minimale recherchée


400
p≥ ≈ 0, 091
4400
En pratique avec 9 contrôles sur 100 voyages l’espérance devient proche de zéro.
(d) La relation précédente est évidemment une relation linéaire, si on augmente la
valeur arbitraire de l’amende on diminue la probabilité de contrôle (pour une
espérance nulle), et donc la fréquence de ces contrôles.
La figure 3.12 montre l’espérance E(Y ) pour trois valeurs d’amendes différentes :
100, 200 et 400 euros. On obtient les probabilités limites : 9 %, 4,5 % et 2 %.
La compagnie de transport a tout intérêt à augmenter le plus possible la valeur
de l’amende pour minimiser le coût lié à la fréquence des contrôles.
90 CHAPITRE 3. LOIS DE PROBABILITÉ DISCRÈTES

Figure 3.12 – Espérance gain/coût pour trois valeurs d’amendes : 100, 200 et 400 euros.

7. Embouteillage et loi de Pascal


Une voie est réservée au virage à gauche. Elle a a une capacité de trois voitures. Six
voitures se présentent au feu et on sait qu’en moyenne 30 % des voitures tournent à
gauche.
(a) Quelle est la probabilité que la capacité de la voie de virage à gauche ne soit
pas suffisante ? On utilisera une loi de Pascal que l’on précisera.
(b) Reprendre le problème précédent en utilisant une loi binomiale classique.
Solution
(a) Chaque voiture a une probabilité de tourner à gauche de p = 30 %. On aura
un dépassement de capacité si quatre voitures au moins tournent à gauche, soit
en notant ce nombre de véhicules X les valeurs 4, 5 ou 6. On peut donc utiliser
une loi de Pascal, où k représente le rang du succès numéro r.
r−1
P (X = k) = Ck−1 × pr × (1 − p)k−r

La probabilité cherchée s’écrit (avec r = 4) :

P (X > 3) = P (X = 4) + P (X = 5) + P (X = 6)

P (X > 3) = C33 × 0.34 + C43 × 0.34 × 0.7 + C53 × 0.34 × 0.72


Ce qui donne

P (X > 3) = 0, 34 × (1 + 4 × 0, 7 + 10 × 0, 72 ) ≈ 0, 0705
(b) On peut aussi utiliser la loi binomiale B(n = 6; p = 0, 3) et calculer la probabilité
d’avoir X > 3. Ce qui donne

P (X > 3) = P (X = 4) + P (X = 5) + P (X = 6)
3.3. EXERCICES SUR LES LOIS DISCRÈTES 91

Soit

P (X > 3) = C64 × 0.34 × 0.72 + C65 × 0.35 × 0.7 + C66 × 0.36 × 0.70

C’est-à-dire

P (X > 3) = 15 × 0.34 × 0.72 + 6 × 0.35 × 0.7 + 0.36 ≈ 0, 0705

8. Un problème plus complexe à base de loi géométrique et de chocolat


Les tablettes de chocolat de la marque Chocolator contiennent chacune une image
spécifique. Il existe N = 100 images distinctes. On suppose que le nombre de tablettes
en vente est infini, et que la proportion des différentes images est la même et vaut
p = 1/N .
L’objectif est de calculer le nombre moyen de tablettes à acheter pour avoir la col-
lection des N images.
(a) On définit la variable aléatoire TN comme étant le nombre de tablettes à acheter
afin de terminer la collection des N images. On définit également, pour tout i
allant de 1 à N , la variable Yi qui représente le nombre de tablettes à acheter
pour obtenir la ieme image, sachant qu’on possède déjà i − 1 images.
Quelle la relation entre TN et les Yi ? Quelle relation sur les espérances ?
(b) Préciser ce qu’est la loi des variables Yi , en fonction de i, N et de l’entier k ≥ 1
(qui représente le nombre d’essais pour obtenir l’image numéro i).
(c) Établir la relation suivante, pour tout x ∈ ] − 1, +1[
+∞
 +∞ 
 d  k 1
k−1
k×x = x =
dx (1 − x)2
k=1 k=0

(d) Utiliser la relation précédente pour déterminer E(Yi ). En déduire une expression
de E(TN ).
(e) On définit la constante d’Euler γ comme
N 
1
γ = lim − ln(N ) ≈ 0, 5772156649...
N −>+∞ k
k=1

Trouver une expression approximative de l’espérance E(TN ) et conclure.


Solution
(a) la variable TN est la somme des variables Yi :
N

TN = Yi
i=1

et les propriétés de l’espérance font que :


N  N
 
E(TN ) = E Yi = E(Yi )
i=1 i=1
92 CHAPITRE 3. LOIS DE PROBABILITÉ DISCRÈTES

(b) Chaque variable Yi peut être assimilée à la loi du premier succès, c’est-à-dire une
N − (i − 1)
loi géométrique de paramètre p = . La probabilité que l’on obtienne
N
la ieme image à l’essai k (précédé de k − 1 échecs) s’écrit donc :
 
N − (i − 1) N − (i − 1) k−1
P (Yi = k) = p × (1 − p)k−1 = × 1−
N N

Soit encore  k−1


N +1−i i−1
P (Yi = k) = ×
N N
(c) On dérive, en intervertissant le signe somme et le signe de dérivation :
 +∞  +∞ +∞
d  k  
x = k × xk−1 = k × xk−1
dx
k=0 k=0 k=1

Par ailleurs, on sait que si −1 < x < +1


+∞
 1
xk =
1−x
k=0

Ce qui permet d’écrire


+∞
  
k−1 d 1 1
k×x = =
dx 1−x (1 − x)2
k=1

(d) On peut calculer l’espérance E(Yi ) en faisant


+∞
 +∞
  k−1
N +1−i i−1
E(Yi ) = k × P (Yi = k) = k× ×
N N
k=1 k=1

En utilisant la relation de la question précédente on obtient

N +1−i 1 N
E(Yi ) = ×  2 =
N i−1 N −i+1
1−
N

On sait par ailleurs que


N

E(TN ) = E(Yi )
i=1

D’où

N
  
N 1 1 1
E(TN ) = =N + + .. +
N −i+1 N N −1 1
i=1
3.3. EXERCICES SUR LES LOIS DISCRÈTES 93

(e) On obtient donc

N
 1
E(TN ) = N × ≈ N × (ln(N ) + γ) ≈ 519
i
i=1

Il faut donc acheter environ 519 tablettes pour espérer avoir les N = 100 images
différentes.
Remarque : un calcul exact (sans l’approximation de la constante d’Euler)
donnerait 518,73 soit environ 519 tablettes.
9. La loi uniforme : Lancer de trois dés
On lance trois dés de couleurs différentes (dés à six faces), et on note la variable
aléatoire S = somme des trois sorties.
(a) Établir la loi de probabilité de S sous forme d’un tableau. On indiquera aussi
les valeurs de la fonction de répartition P (S ≤ x).
(b) Représenter l’histogramme de la loi de probabilité.
(c) Déterminer les valeurs de l’espérance E(S) et de la variance V (S).
Solution
(a) La face sortie pour chaque dé suit une loi uniforme. La combinaison des trois
dés complique un peu les choses. La variable S peut prendre 16 valeurs possibles
parmi [3, 4, 5, ..., 18]. Comme les dés sont de couleurs différentes, il y 63 = 216
combinaisons de valeurs de faces possibles. Il reste à dénombrer le nombre de
façons différentes d’avoir une valeur de S donnée, avec les trois dés.
Donnons quelques exemples :
— Il y a une seule façon de faire 3 : 111.
— Il y a trois façons de faire 4 : 112, 121, 211.
— Il y a six façons de faire 5 : 113, 131, 311, 122, 212, 221.
— Il y a dix façons de faire 6 : 222 (compte pour 1), 123 (compte pour 6) et
(114) compte pour 3.
Ce qui donne le tableau suivant (on a multiplié toutes les probabilités par 216) :

valeur de S = x 3 4 5 6 7 8 9 10 11 12
216 × P (S = x) 1 3 6 10 15 21 25 27 27 25
216 × P (S ≤ x) 1 4 10 20 35 56 81 108 135 160
S 13 14 15 16 17 18
216 × P (S = x) 21 15 10 6 3 1
216 × P (S ≤ x) 181 196 206 212 215 216
On vérifie que la distribution est normalisée à 1 :
16
 216
P (S = k) = =1
216
k=1

(b) On représente les valeurs des probabilités obtenues sur la figure 3.13.
94 CHAPITRE 3. LOIS DE PROBABILITÉ DISCRÈTES

Figure 3.13 – Loi de probabilité (en %) dans le cas de la somme S de 3 dés de couleurs
différentes.

(c) On calcule l’espérance de S en faisant


16
 1 3 1 2268
E(S) = xi × P (X = xi ) = 3 × +4× + ... + 18 × = = 10, 5
216 216 216 216
i=1

On calcule la variance de S en faisant


16

V (S) = E(S 2 ) − E(S)2 = x2i × P (X = xi ) − E(S)2
i=1

Ce qui donne
1 3 1 35
V (S) = 32 × + 42 × + ... + 182 × − 10, 52 = = 8, 75
216 216 216 4
10. La loi uniforme 2 : Lancer de trois dés
On lance trois dés de couleurs différentes (dés à six faces), et on note la variable
aléatoire M = maximum des trois sorties.
(a) Établir la loi de probabilité de M sous forme d’un tableau. On indiquera aussi
les valeurs de la fonction de répartition P (M ≤ x).
(b) Représenter l’histogramme de la loi de probabilité.
(c) Déterminer les valeurs de l’espérance E(M ) et de la variance V (M ).
Solution
(a) Comme M représente le maximum des trois dés, il est clair qu’il prend ses
valeurs dans la suite [1, 2, 3, 4, 5, 6]. Il reste ensuite à faire du dénombrement
pour remplir le tableau de la loi de probabilité ci-dessous. Comme les dés sont
de couleurs différentes, il y 63 = 216 combinaisons de valeurs de faces possibles.
3.3. EXERCICES SUR LES LOIS DISCRÈTES 95

valeur de M = x 1 2 3 4 5 6
216 × P (M = x) 1 7 19 37 61 91
216 × P (M ≤ x) 1 8 27 64 125 216
On peut présenter les calculs ainsi :
— Si le maximum est M = 1, il y a une seule sortie possible : 111.
— Si le maximum est M = 2, il y a 7 sorties possibles : 222 qui compte pour
un, 221 qui compte pour trois et 211 qui compte pour trois.
— Si le maximum est M = 3, il y a 19 sorties possibles : 333 qui compte pour
un, 33X qui compte pour 2 × 3 et 3XX qui compte pour 3 × 2 × 2.
— Si le maximum est M = 4, il y a 37 sorties possibles : 444 qui compte pour
un, 44X qui compte pour 3 × 3 et 4XX qui compte pour 3 × 3 × 3.
— Si le maximum est M = 5, il y a 61 sorties possibles : 555 qui compte pour
un, 55X qui compte pour 3 × 4 et 5XX qui compte pour 3 × 4 × 4.
— Si le maximum est M = 6, il y a 91 sorties possibles : 666 qui compte pour
un, 66X qui compte pour 3 × 5 et 6XX qui compte pour 3 × 5 × 5.
(b) Les résultats précédents permettent de représenter les probabilités sur la figure
3.14.
(c) Un calcul direct de l’espérance et de la variance donne :
6
 1 7 91
E(M ) = xi × P (X = xi ) = 1 × +2× + ... + 6 × ≈ 4, 96
216 216 216
i=1

et
6

V (M ) = E(M 2 ) − E(M )2 = x2i × P (X = xi ) − E(M )2
i=1

Ce qui donne
1 7 91
V (M ) = 12 × + 72 × + ... + 62 × − 4, 962 ≈ 1, 31
216 216 216

Figure 3.14 – Loi de probabilité (en %) dans le cas du maximum M obtenu dans le lancer
de 3 dés.
96 CHAPITRE 3. LOIS DE PROBABILITÉ DISCRÈTES

11. Population des villes : loi de Zipf


En consultant le site de l’INSEE (insee.fr) https://statistiques-locales.insee.
fr/) ou encore à partir de l’url
https://statistiques-locales.insee.fr/#c=indicator&i=pop_legales.popmun_
&s=2017&view=map1, vous avez accès aux statistiques nationales de L’INSEE.
Vous pouvez extraire un fichier de données contenant la population de toutes les
communes du pays. Le fichier sera certainement au format Excel (csv possible). Vous
pourrez donc utiliser un tableur pour traiter les données.
(a) Représenter en échelle log10/log10 la population en fonction du rang de la com-
mune pour les 75 villes les plus peuplées. Mettre en évidence la relation qui lie
ces deux grandeurs. Donner son expression en précisant les paramètres corres-
pondant de la loi de Zipf.
(b) Représenter en échelle log10/log10 la population en fonction du rang de la com-
mune pour toutes les villes du fichier. Comparer à la question précédente.
(c) Représenter en échelle log10/log10 la population en fonction du rang de la com-
mune pour les 1 000 villes les plus peuplées. Mettre en évidence la relation qui
lie ces deux grandeurs.
Solution
(a) Une fois obtenu le fichier excel à partir de la source INSEE, on peut représenter
les données de population concernant les 75 plus grandes communes comme sur
la figure 3.15. La relation (en échelle log/log) est clairement linéaire.

Figure 3.15 – Représentation log-log de la population des 75 plus grandes villes de France
en fonction du rang correspondant. Paris est la ville la plus à gauche du graphique.

La relation obtenue suit la tendance :


log10(POP) = −0, 661 × log10(rang) + 6, 063
3.3. EXERCICES SUR LES LOIS DISCRÈTES 97

Ce qui donne aussi :


1 156 112
POP =
rang0,661
Il est facile de normaliser en divisant par la population totale des 75 villes.
(b) Si on réitère le processus précédent pour la totalité des communes, on obtient
la figure 3.16 ci dessous.
On retrouve d’abord la relation linéaire précédente, mais lorsque le logarithme
du rang devient trop grand (au delà de 4,00 environ), on observe une chute
brutale et quasiment verticale de la courbe. Cela correspond aux communes les
moins peuplées et signifie qu’elles ne sont pas représentatives de l’échantillon. Il
faut les en exclure.

Figure 3.16 – Représentation log-log de la population de l’ensemble des communes de


France en fonction du rang. Les communes les moins peuplées sont à droite de la figure.

(c) La figure 3.17 représente les 1006 communes les plus peuplées en fonction du
rang. On trouve cette fois une tendance :

log(POP) = −0, 719 × log(rang) + 6, 194

Ce qui correspond à une loi de la forme :


1 563 148
POP =
rang0,719

Il est possible de normaliser cette loi en utilisant la somme des habitants des
1006 communes en question. On retrouve ainsi une loi de type Zipf.
98 CHAPITRE 3. LOIS DE PROBABILITÉ DISCRÈTES

Figure 3.17 – Représentation log-log de la population des 1006 plus grandes villes de
France en fonction du rang.

12. Une démonstration autour de la loi de Poisson


On va démontrer dans cet exercice la relation entre la loi binomiale B(n, p) et la loi
de Poisson P (λ), lorsque n est grand et p petit.
On connaît l’expression du calcul de la loi de probabilité binomiale B(n, p) pour une
variable aléatoire X, pour tout j allant de 0 à n :

P (X = j) = Cnj × pj × (1 − p)n−j

On définit une extension de cette loi sur N en faisant :



Cnj × pjn × (1 − pn )n−j si j ≤ n
P (X = j) =
0 si j > n
On a ainsi défini une suite de réels (pn ).
On rappelle la limite (pour tout x ∈ R) :
 x n
lim 1 + = exp(x)
n→+∞ n

(a) Écrire en fonction de (npn )j la limite de la probabilité P (X = j) (X suivant


une loi binomiale) quand n tend vers l’infini.
(b) En faisant l’hypothèse que le produit n × pn est constant pour tout n > 1 et
vaut λ, donner une nouvelle expression de P (X = j).
(c) Conclure en revenant sur la formule donnée dans le cours.
3.3. EXERCICES SUR LES LOIS DISCRÈTES 99

Solution
(a) On part de la formule, valable pour tout n ≥ 1 :
n × (n − 1)...(n − j + 1)
P (X = j) = × pjn × (1 − pn )n−j
j!
Ce que l’on réécrit :
(npn )j
P (X = j) = × (1 − 1/n)...(1 − (j − 1)/n) × (1 − pn )n−j
j!
et en supposant que la limite existe, pour j fixé :
(npn )j
lim P (X = j) = lim × (1 − pn )n−j
n→+∞ n→+∞ j!
Car tous les facteurs de la forme (1 − a/n) tendent vers 1 lorsque n tend vers
l’infini.
(b) On utilise l’expression pn = λ/n pour tout n > 1.
Ce qui donne :
     
λj λ n−j λj λ n λ −j
lim P (X = j) = lim × 1− = lim 1− 1−
n→+∞ n→+∞ j! n n→+∞ j! n n
On remarque que pour j entier fixé, on a forcément
 
λ −j
lim 1− =1
n→+∞ n
Ce qui conduit à :
λj
lim P (X = j) = × exp(−λ)
n→+∞ j!
(c) On peut donc approcher une loi binomiale par une loi de Poisson, en prenant
les limites ci-dessous :

si n > 50
B(n, p) ≈ P (λ)
si λ = n.p < 5

Ce qui signifie que dans ce cas :


(n × p)k
P (X = k) = Cnk × pk × (1 − p)n−k ≈ × exp(−n × p)
k!
13. Approximation de Poisson et langage python
On cherche dans cet exercice à comparer les lois discrètes binomiale et de Poisson.
On rappelle la convergence en loi selon les deux critères :

si n > 50
B(n, p) ≈ P (λ)
si λ = n.p < 5
L’objectif ici n’est pas de prouver ces deux critères, mais de les vérifier que numéri-
quement et graphiquement.
100 CHAPITRE 3. LOIS DE PROBABILITÉ DISCRÈTES

(a) Construire un programme python qui permet de comparer sur une seule figure
les lois B(50, 0.3) et P (15) ainsi que B(100, 0.01) et P (1).
Le plus simple est de construire des diagrammes bâtons qui pourront facilement
être comparés.
(b) Comparer les résultats obtenus, en fonction des critères d’approximation vus
dans le cours.
Solution
(a) Le programme ci-dessous permet de représenter sur une seule figure 3.18, en
quatre vignettes, les lois demandées. La librairie stats contient toutes les lois
dont nous avons besoin.
Ce code appelle quelques commentaires :
— On utilise la syntaxe stats.poisson.pmf pour obtenir en python la pmf
(probability mass function en anglais) de la loi de Poisson qui permet ensuite
de construire l’histogramme.
— On procède de même pour la loi binomiale, avec stats.binom.pmf.
— L’affichage des histogrammes fait que l’on doit comparer deux à deux et
verticalement (droite ou gauche) les résultats.
1 #importation des librairies
2 import numpy as np
3 import matplotlib.pyplot as plt
4 import scipy.stats as stats
5 #affichage en 4 vignettes
6 a=3
7 b=28
8 XX=range(a,b)
9 c=0
10 d=8
11 X=range(c,d)
12 plt.figure()
13 plt.subplot(221)
14 plt.stem(XX,stats.binom.pmf(XX,50,0.3),markerfmt=’ko’)
15 plt.grid()
16 plt.title(u’Loi B(50,0.3)’)
17
18 plt.subplot(222)
19 plt.stem(X,stats.binom.pmf(X,100,0.01),markerfmt=’ko’)
20 plt.grid()
21 plt.title(u’Loi B(100,0.01)’)
22
23 plt.subplot(223)
24 plt.stem(XX,stats.poisson.pmf(XX,15),markerfmt=’ko’)
25 plt.grid()
26 plt.title(u’Loi P(15)’)
27
28 plt.subplot(224)
29 plt.stem(X,stats.poisson.pmf(X,1),markerfmt=’ko’)
30 plt.grid()
31 plt.title(u’Loi P(1)’)
3.3. EXERCICES SUR LES LOIS DISCRÈTES 101

32 plt.show()

Figure 3.18 – Comparaison entre les lois de Poisson et binomiale. Sur la ligne du haut :
deux lois binomiales B(50, 0.3) et B(100, 0.01). Sur la ligne du bas : deux lois de Poisson
P (15) et P (1).

(b) On voit sur la figure 3.18, que l’accord n’est qu’approximatif entre les deux
diagrammes bâtons de gauche (haut et bas), la condition np < 5 n’est pas
remplie, car np vaut 15.
Par contre, sur la figure 3.18 à droite (haut et bas), l’accord est satisfaisant
entre les deux diagrammes bâtons, car les deux conditions de convergence sont
remplies.
Chapitre 4

Lois de probabilité continues

4.1 Variables aléatoires continues


4.1.1 Une définition
Soit I un intervalle de R. On appelle densité de probabilité sur I une fonction f telle
que :
— f est continue et positive sur I ; ´
— La fonctionf est normalisée à 1 : I f (x) dx = 1.
On dit que la variable aléatoire X continue, qui prend ses valeurs sur l’intervalle I, est
de densité de probabilité f si :
ˆ b
P (a ≤ X ≤ b) = f (x) dx
a

Remarquons que la probabilité P (X = c), où c ∈ I est forcément nulle car :


ˆ c
P (X = c) = f (x) dx = 0
c

4.1.2 Fonction de répartition


La fonction de répartition de la variable aléatoire X continue est l’application de R
dans R définie par
ˆ x
F (x) = P (X ≤ x) = f (t) dt
−∞

La fonction de répartition possède les propriétés suivantes :


— ∀ x ∈ R, F (x) ∈ R
— F (x) est une fonction croissante
— ∀(a, b) ∈ R2 , P (a < X ≤ b) = F (b) − F (a)
— lim F (x) = 0
x−>−∞
´ +∞
— lim F (x) = 1, c’est-à-dire aussi −∞ f (t) dt = 1
x−>+∞

103
104 CHAPITRE 4. LOIS DE PROBABILITÉ CONTINUES

4.1.3 Caractéristiques d’une variable aléatoire continue


On peut caractériser une variable continue X par plusieurs paramètres dont :
1. L’espérance ˆ +∞
E(X) = t × f (t) dt
−∞

2. La médiane de X, qui est la valeur xmed de la variable qui partage l’univers des
résultats possibles en deux intervalles de même probabilité : F (xmed ) = 1/2 ;
3. La variance de X, notée V (X) :
ˆ +∞ ˆ +∞ 2
2 2 2 2
V (X) = E(|X−E(X)| ) = E(X )−E(X) = t ×f (t) dt− t × f (t) dt
−∞ −∞

4. L’écart-type : σX = V (X).
La variance de la variable aléatoire continue X a la propriété suivante (a, b ∈ R) :

V (aX + b) = a2 × V (X)

L’espérance de deux variables aléatoires continues X et Y a la propriété de linéarité


(a, b ∈ R) :
E(aX + bY ) = a × E(X) + b × E(Y )

4.1.4 Covariance de deux variables aléatoires


On se donne deux variables aléatoires X et Y , ayant toutes les deux une variance finie,
et on définit la covariance de X et Y comme :

cov(X, Y ) = E[(X − x)(Y − y)]

où x = E(X) et y = E(Y ).
La covariance de deux variables aléatoires chiffre la valeur espérée du produit des écarts
à leurs moyennes. Notons que la notion de covariance s’applique aussi bien à des variables
discrètes (on calculera l’espérance par des sommes discrètes) qu’à des variables continues
(on calculera alors l’espérance à l’aide d’intégrales).
Il est assez facile de démontrer que :

cov(X, Y ) = E(X × Y ) − x × y

On définit le coefficient de corrélation (normalisé) ρ :

cov(X, Y )
ρ(X, Y ) =
σ(X) × σ(Y )

où σ(X) et σ(Y ) sont les écart-types des variables aléatoires X et Y .


Cette quantité est telle que
−1 ≤ ρ ≤ +1
4.2. DES LOIS CONTINUES 105

On admet que :
— Si ρ est proche de ±1, alors il y a une relation presque linéaire entre les variables
X et Y ,
— Si ρ est proche de zéro, les deux variables peuvent être considérées comme (presque)
indépendantes l’une de l’autre.
— En fait, on peut montrer que la relation affine Y = a × X + b est approchée pour
son coefficient directeur (au sens des moindres carrés) par la formule :

σ(Y ) cov(X, Y )
a = ρ(X, Y ) × =
σ(X) V (X)

La constante b est donnée, quant à elle, par :

b = E(Y ) − a × E(X)

Le carré de l’erreur est alors donné par la formule :

V (Y ) × (1 − ρ2 (X, Y ))

Si ρ tend vers ±1, l’erreur sur l’ajustement linéaire est alors proche de 0.
— Si a et b sont des réels, et X et Y des variables aléatoires, on a le résultat important :

V (aX + bY ) = a2 × V (X) + b2 × V (Y ) + 2ab × cov(X, Y )

Pour le retenir, remarquons que ce résultat ressemble à une identité remarquable


(a + b)2 = a2 + b2 + 2ab.

4.2 Des lois continues


4.2.1 La loi uniforme continue
Une variable aléatoire continue X suit la loi uniforme sur l’intervalle I = [a, b], (avec
a < b) si elle admet pour fonction densité de probabilité la fonction f :

 1
si x ∈ I
f (x) = b−a
 0 sinon

les principales caractéristiques de cette loi sont :


a+b
— L’espérance de la variable aléatoire X est E(X) = ;
2
a+b
— Sa médiane xmed = ;
2
(b − a)2
— Sa variance V (X) = E(X 2 ) − E(X)2 = .
12
La figure 4.1 montre les cas où I = [0, 2] et I = [0, 5].
106 CHAPITRE 4. LOIS DE PROBABILITÉ CONTINUES

Figure 4.1 – Loi uniforme continue dans les cas des intervalles [0, 2] et [0, 5]. On remarque
que la surface des rectangles vaut toujours 1 (condition de normalisation).

4.2.2 La loi exponentielle


Une variable aléatoire continue X suit la loi exponentielle de paramètre λ > 0, si elle
admet pour fonction densité de probabilité la fonction f :

λ × exp(−λ × x) si x ≥ 0
f (x) =
0 si x < 0

Les principales caractéristiques de cette loi sont (voir aussi la figure 4.2) :
1
— l’espérance de la variable aléatoire X est E(X) = ;
λ
ln2
— sa médiane xmed = ;
λ
1
— sa variance V (X) = E(X 2 ) − E(X)2 = 2 .
λ

Figure 4.2 – En haut, loi exponentielle pour le paramètre λ = 3 et sa fonction de répar-


tition. En bas, loi exponentielle pour le paramètre λ = 1 et sa fonction de répartition.
4.2. DES LOIS CONTINUES 107

4.2.3 La loi gaussienne ou normale


Une variable aléatoire continue X suit la loi gaussienne (ou normale) de paramètres m
et σ > 0, si elle admet pour fonction densité de probabilité la fonction f :

 
1 −(x − m)2
f (x) = √ exp
σ 2π 2σ 2

On note cette loi N (m, σ). Ses principales caractéristiques sont :


— l’espérance de la variable aléatoire X est E(X) = m ;
— sa médiane xmed = m ;
— sa variance V (X) = E(X 2 ) − E(X)2 = σ 2 .
La figure 4.3 représente cette loi pour différentes valeurs de m et σ ainsi que la fonction
de répartition correspondante.

Figure 4.3 – En haut, loi gaussienne N (m, σ), pour un écart-type de 1,5 et les valeurs de
moyenne −2; 1; 4. En bas, les fonctions de répartition correspondantes. On remarque que
la densité de probabilité est symétrique par rapport à la droite verticale d’équation x = m.
L’écart-type, quant à lui, correspond au plus ou moins grand aplatissement de la courbe
gaussienne.

Si les paramètres valent m = 0 et σ = 1, on dit que N (0, 1) représente la loi normale


centrée réduite, dont on connaît la table standard de fonction de répartition, on pourra
voir la figure 4.4.
La loi normale centrée réduite a pour densité de probabilité :

 
1 −x2
f (x) = √ exp
2π 2
108 CHAPITRE 4. LOIS DE PROBABILITÉ CONTINUES

La figure 4.5 montre la fonction densité de probabilité correspondant à la loi normale


centrée réduite ainsi que les variations de la fonction de répartition correspondante :

x  
1 −t2
ˆ
P (X ≤ x) = √ exp dt
2π −∞ 2

Pour passer d’un problème régi par une loi normale de moyenne m et d’écart-type σ,
noté N (m, σ) à la loi normale centrée réduite N (0, 1) on utilise le changement de variable :

x−m
t=
σ

On peut dans certains cas approcher une loi binomiale B(n, p) par une loi normale
N (m, σ), avec les relations :

n×p
m =
σ = n × p × (1 − p)

On dit que la variablealéatoire X, qui suit la loi binomiale B(n, p) converge en loi vers
la loi normale N (np, np(1 − p)).
Remarquons qu’on passe ainsi d’une loi discrète à une loi continue, ce qui oblige à faire
une correction de continuité. Cela revient à dire qu’en notant X la variable discrète qui
suit B(n, p) et Y la variable qui suit N (m, σ), on écrit :
k+1/2  
1 (y − m)2
ˆ
P (X = k) ≈ P (k − 1/2 ≤ Y ≤ k + 1/2) = √ exp − dy
k−1/2 σ 2π 2σ 2

On admet que cette approximation vers la loi normale est licite si :

n × p × (1 − p) > 18

On admettra enfin que la loi normale est stable par addition, c’est-à-dire que si on
dispose de n variables aléatoires normales Xi indépendantes suivant les lois N (mi , σi ), où
i est un entier strictement positif, 0 < i ≤ n, alors la variable aléatoire
n

Sn = Xi
i=1

suit la loi normale   


n  n
 
N mi ,  σ2 i
i=1 i=1

Cette notion est généralisable à une combinaison linéaire de variables gaussiennes Xi .


4.2. DES LOIS CONTINUES 109

Figure 4.4 – Fonction de répartition de la loi normale centrée réduite N (0, 1) : P (X ≤ x).
Si x < 0, P (X ≤ x) = 1 − P (X ≤ −x).
Il faut retenir aussi que P (X ≥ x) = 1 − P (X ≤ x).
x−m
On rappelle aussi la formule du changement de variable t = , qui permet de se
σ
ramener à la loi normale centrée réduite à partir d’une loi gaussienne générale N (m, σ).
En général les processus étudiés qui dépendent d’une loi gaussienne ne suivent pas la
loi normale centrée réduite. Il faut toujours se ramener à cette dernière en utilisant le
changement de variable en question.
110 CHAPITRE 4. LOIS DE PROBABILITÉ CONTINUES

Figure 4.5 – Densité de probabilité correspondant à la loi normale centrée réduite N (0, 1)
et fonction de répartition correspondante. On remarque que la densité de probabilité est
symétrique par rapport à l’axe des ordonnées.

4.2.4 La loi log-normale


Une variable aléatoire continue X suit une loi dite log-normale de paramètres m et
σ > 0, si la variable aléatoire Y = ln(X) suit une loi normale de paramètres m et σ > 0.
On rencontre cette loi lorsqu’on doit modéliser une grandeur qui est la multiplication
de facteurs indépendants. la fonction densité de probabilité la fonction f est :
 
1 −(ln(x) − m)2
f (x) = √ exp
x × σ 2π 2σ 2

Ses principales caractéristiques (voir aussi la figure 4.6) sont :


— l’espérance E(X) = exp(m + σ 2 /2) ;
— la médiane : xmed = exp(m) ;
— la variance :

V (X) = E(X 2 ) − E(X)2 = [exp(σ 2 ) − 1] × exp(2m + σ 2 )


4.2. DES LOIS CONTINUES 111

Figure 4.6 – Loi log-normale pour les couples de paramètres m = 1; σ = 0.5


et m = 1; σ = 1.5.

4.2.5 La loi de Pareto


La loi de Pareto est une loi de puissance, continue, analogue au cas discret de la loi de
Zipf. Sa densité de probabilité s’écrit, avec les paramètres k > 0 et sm > 0 :

 skm
f (x) = k× si x ≥ sm
 0 xk+1
si x < sm

Rappelons que la loi de Pareto est associée au principe de la répartition 80%/20% (reve-
nus, facturation etc..) que l’on rencontre souvent en économie, en maintenance industrielle
et dans divers autres domaines. On appelle souvent le paramètre k l’indice de Pareto.

Figure 4.7 – Densité de probabilité correspondant à la loi de Pareto et à la fonction de


répartition correspondante pour les paramètres sm = 1 et k = 1 puis k = 3.

Ses principales caractéristiques sont (voir aussi la figure 4.7) :


k × sm
— l’espérance de la variable aléatoire X (avec k > 1) est E(X) = ;
k−1
— sa médiane xmed = sm × 21/k ;
k × s2m
— sa variance avec (k > 2) : V (X) = E(X 2 ) − E(X)2 = .
(k − 1)2 (k − 2)
112 CHAPITRE 4. LOIS DE PROBABILITÉ CONTINUES

4.3 Exercices sur les lois continues


1. Espérance, médiane et variance de lois continues
(a) Retrouver l’expression générale de la densité de probabilité d’une loi uniforme
sur [a, b] ainsi que les expressions des espérance, médiane et variance associées.
(b) Retrouver les expressions des espérance, médiane et variance associées à une
loi exponentielle de paramètre λ. Il sera nécessaire d’utiliser la formule de
l’intégration par parties :
ˆ b ˆ b
U  (x) × V (x) dx = [U (x) × V (x)]ba − U (x) × V  (x) dx
a a
Solution
(a) On utilise la normalisation de la loi uniforme de densité f (t), égale à une
constante C non nulle sur l’intervalle [a, b] :
ˆ +∞ ˆ b
f (t) dt = C dt = 1
−∞ a
on en déduit donc que
1
C=
b−a
Si la variable continue X suit la loi uniforme de densité :

 1
si x ∈ [a, b]
f (x) = b−a
 0 sinon
´b
l’espérance peut se calculer comme : E(X) = a t × f (t) dt.
Ce qui donne
ˆ b
t b2 − a2 a+b
E(X) = dt = =
a b−a 2(b − a) 2
´b 2
De même, on peut calculer la variance V (X) = a t × f (t) dt − E(X)2 :
 
a+b 2
ˆ b 2
t b3 − a 3
V (X) = dt − E(X)2 = −
a b−a 3(b − a) 2
On utilise l’identité
b3 − a3 = (b − a)(b2 + ab + a2 )
Ce qui donne finalement
a2 + ab + b2 b2 + 2ab + a2 (a − b)2
V (X) = − =
3 4 12
La médiane se calcule enfin en faisant :
b
1 b − xmed
ˆ
P (X > xmed ) = 0, 5 = dt =
xmed b−a b−a
On en déduit
a+b
xmed =
2
4.3. EXERCICES SUR LES LOIS CONTINUES 113

(b) Pour calculer l’espérance d’une variable aléatoire X suivant une loi exponentielle
de paramètre λ, il suffit de revenir à la définition (Rappelons que la densité de
la loi exponentielle est nulle si x < 0) :
ˆ +∞
E(X) = λ × t × exp(−λt) dt
0

En intégrant par parties, on a :


ˆ +∞
E(X) = [−t × exp(−λt)]+∞
0 − −exp(−λt) dt
0

Soit encore, en utilisant des limites classiques :


ˆ +∞
E(X) = (0 − 0) + exp(−λt) dt
0

Enfin, on a :  +∞
exp(−λt) 1
E(X) = =
−λ 0 λ
Le calcul de la médiane se fait en utilisant la définition :
ˆ xmed
P (X < xmed ) = 0, 5 = λ × exp(−λt) dt
0

Ce qui donne
1
[−exp(−λt)]x0 med =
2
Soit enfin
ln2
xmed =
λ
Par définition on a pour la variance :
ˆ +∞
V (X) = λ × t2 × exp(−λt) dt − E(X)2
0

La variance se calcule en faisant deux intégrations par parties successives de


l’intégrale :
ˆ +∞
2 +∞
ˆ
t2 × exp(−λt) dt = 0 + t × exp(−λt) dt
0 λ 0

Nous laissons au lecteur le soin de finir le calcul et de trouver :


1
V (X) =
λ2
114 CHAPITRE 4. LOIS DE PROBABILITÉ CONTINUES

2. Loi normale
On considère que la variable aléatoire X = QI (quotient intellectuel) est modélisable
par une loi normale de moyenne m = 100 et d’écart-type σ = 15.
(a) Calculer la probabilité de dépasser 135 de QI.
(b) Calculer la probabilité d’avoir un QI entre 95 et 105.
(c) Calculer la probabilité d’avoir un QI inférieur à 90.
(d) Calculer la valeur du QI qui est dépassée dans 80 % des cas.
(e) Calculer la valeur du QI qui est dépassée dans 3 % des cas.
Solution
(a) On veut calculer P (QI > 135). Pour cela on peut utiliser le changement de
QI − 100 135 − 100
variable x = = ≈ +2, 33.
15 15
On cherche alors, à l’aide de la table de la figure 4.4 :
P (QI > 135) = P (x > +2, 33) = 1 − P (x ≤ +2, 33) ≈ 1 − 0, 9901 ≈ 0, 99 %

(b) On veut calculer P (95 < QI < 105). Pour cela on peut utiliser le changement
de variable
QI − 100 95 − 100
x1 = = ≈ −0, 33
15 15
et
QI − 100 105 − 100
x2 = = ≈ +0, 33
15 15
Ce qui nous donne, grâce à la table de la figure 4.4 :
P (95 < QI < 105) = P (x < +0, 33) − P (x < −0, 33)
Soit encore
P (95 < QI < 105) = 2 × P (x ≤ +0, 33) − 1 = 2 × 0, 6293 − 1 ≈ 25, 86 %

(c) On veut calculer P (QI < 90). Pour cela on peut utiliser le changement de
QI − 100 90 − 100
variable x = = ≈ −0, 67.
15 15
On cherche alors, à l’aide de la table de la figure 4.4 :
P (QI < 90) = P (x < −0, 67) = 1 − P (x ≤ +0, 67) ≈ 1 − 0, 7486 ≈ 25, 14 %

(d) Dans cette question , on doit chercher la valeur la plus proche des 80 % deman-
dés, et déduire la valeur du x correspondant. Notons que si la valeur du QI est
dépassée dans 80 % des cas, elle se situe forcément avant la valeur moyenne de
100.
Avec 79,95 %, la valeur la plus proche des 80 % de la table donne un x = 0, 84.
On en déduit donc que :
100 − QI
= 0, 84
15
Soit la valeur dépassée dans 80 % des cas :
QI = 100 − 0, 84 × 15 = 87, 4 ≈ 87
4.3. EXERCICES SUR LES LOIS CONTINUES 115

(e) Dans cette question , on doit chercher la valeur la plus proche des 3 % demandés,
et déduire la valeur du x correspondant. Notons que si la valeur du QI est
dépassée dans 3 % seulement des cas, elle se situe forcément bien après la
valeur moyenne de 100.
Par ailleurs, on cherche le complémentaire de 3 % (car 3 % n’est pas dans la
table 4.4), soit : 97 %. La valeur de x correspondante est x = 1, 88 pour 96,99
%.
On en déduit donc que :
QI − 100
= 1, 88
15
Soit la valeur dépassée dans 3 % des cas :
QI = 100 + 1, 88 × 15 = 128, 2 ≈ 128
3. Loi exponentielle
Un certain modèle de téléphone a une durée de vie T modélisable par une loi ex-
ponentielle. On constate que 50 % des appareils sont encore fonctionnels après deux
ans.
(a) Déterminer le paramètre λ de la loi exponentielle.
(b) Calculer la probabilité qu’un téléphone soit fonctionnel plus de trois ans.
(c) Calculer la probabilité qu’un téléphone soit fonctionnel plus de cinq ans.
(d) Calculer la probabilité qu’un téléphone soit fonctionnel moins de un an.
Solution
(a) Puisque 50 % des appareils sont fonctionnels après deux ans, on peut écrire que :
ˆ +∞
P (T > 2) = 0, 5 = λ × exp(−λt) dt
2
Ce qui donne après intégration
1
= [−exp(−λt)]+∞
2
2
Soit enfin
1
= exp(−2λ) − 0
2
On en déduit donc que :
ln2
λ=
2
(b) On cherche ici la probabilité :
ˆ +∞
ln2 +∞
ˆ
P (T > 3) = λ × exp(−λt) dt = exp(−λt) dt
3 2 3
Ce qui donne
 +∞  
ln2 3 × ln2
P (T > 3) = −exp(− × t) = exp −
2 3 2
Soit finalement
P (T > 3) ≈ 35, 36 %
116 CHAPITRE 4. LOIS DE PROBABILITÉ CONTINUES

(c) On cherche maintenant la probabilité :


ˆ +∞
ln2 +∞
ˆ
P (T > 5) = λ × exp(−λt) dt = exp(−λt) dt
5 2 5
Ce qui donne
 +∞  
ln2 5 × ln2
P (T > 5) = −exp(− × t) = exp −
2 5 2
Soit finalement
P (T > 5) ≈ 17, 68 %
(d) On cherche ici la probabilité :
ˆ 1
ln2 1
ˆ
P (T < 1) = λ × exp(−λt) dt = exp(−λt) dt
0 2 0
Ce qui donne
 1  
ln2 ln2
P (T < 1) = −exp(− × t) = −exp − + exp(0)
2 0 2
Soit finalement
P (T < 1) ≈ 29, 29 %
4. Une loi parabolique
On se donne la fonction f , où a est une constante :

a × (1 − x2 ) si x ∈ [−1, 1]
f (x) =
0 sinon
(a) Calculer la valeur du paramètre a pour que f soit bien une densité de probabilité.
(b) Représenter cette densité de probabilité.
(c) Déterminer l’expression de la fonction de répartition F (x) et la représenter.
(d) Calculer la probabilité, selon cette loi que P (X ≤ 0.2).
(e) Calculer la probabilité, selon cette loi que P (X ≥ 0.4).
(f) Calculer l’espérance de cette loi.
(g) Calculer la variance associée.
Solution
(a) On utilise la normalisation de la fonction f :
ˆ +1
a(1 − t2 ) dt = 1
−1

Ce qui donne
 +1
t3 4 1
t− = =
3 −1 3 a
3
La fonction f est une densité de probabilité si a = .
4
4.3. EXERCICES SUR LES LOIS CONTINUES 117

Figure 4.8 – Densité de probabilité correspondant à la loi parabolique.

(b) On représente la densité de probabilité parabolique sur la figure 4.8.


(c) La fonction de répartition se calcule par une intégrale (avec −1 ≤ x ≤ +1) :
3 x
ˆ
P (X ≤ x) = (1 − t2 ) dt
4 −1
Le calcul direct donne le résultat recherché (avec −1 ≤ x ≤ +1) :
 
3 x3 2
P (X ≤ x) = x− +
4 3 3
Si x ≥ 1 alors la fonction de répartition vaut 1, et si x ≤ −1 alors la fonction
de répartition vaut 0, comme sur la figure 4.9.

Figure 4.9 – Fonction de répartition F (x) = P (X ≤ x) correspondant à la loi parabolique.

(d) Pour calculer P (X ≤ 0.2) on utilise la fonction de répartition :


 
3 0.23 2
P (X ≤ 0.2) = 0.2 − + ≈ 64, 8 %
4 3 3
118 CHAPITRE 4. LOIS DE PROBABILITÉ CONTINUES

(e) On écrit que


 
3 0.43 2
P (X ≥ 0.4) = 1 − P (X < 0.4) = 1 − 0.4 − + ≈ 21, 6 %
4 3 3
(f) L’espérance se calcule comme :
ˆ +1
3
E(X) = × x × (1 − x2 ) dx = 0
−1 4

Puisque l’intégrande est une fonction impaire, l’intégrale est nulle. Ce résultat
était prévisible, étant donné l’allure paire de la densité de probabilité.
(g) La variance se calcule comme :
ˆ +1
3
V (X) = × x2 × (1 − x2 ) dx − E(X)2
−1 4

1
Un calcul élémentaire donne le résultat V (X) = .
5
5. La loi de Laplace
On se donne la fonction f , avec a > 0 :
 
1 |x|
f (x) = × exp −
2a a
(a) Vérifier que f (x) est bien une densité de probabilité.
(b) Représenter cette densité de probabilité.
(c) Déterminer l’expression de la fonction de répartition F (x) et la représenter.
(d) Calculer la probabilité, selon cette loi que P (X ≤ 1) si a = 1.
(e) Calculer la probabilité, selon cette loi que P (X ≥ 2) si a = 1.
(f) Calculer l’espérance de cette loi.
(g) Calculer la variance associée.
Solution
(a) La fonction f est bien normalisée :
ˆ +∞ ˆ +∞
1
f (x) dx = 2 × exp(−x/a) dx = [−exp(−x/a)]+∞
0 =1
−∞ 0 2a
(b) Pour la détermination de la fonction de répartition il faut séparer deux cas :
— Si x ≤ 0 : ˆ x
1 1
F (x) = × exp(t/a) dt = exp(x/a)
2a −∞ 2
— Si x > 0 :
x
1 1 1
ˆ
F (x) = + exp(−t/a) dt = 1 − exp(−x/a)
2 2a 0 2
La fonction f est paire, et comme elle est de plus normalisée, on a forcément
1 ´0 1
−∞ exp(t/a) dt =
2a 2
4.3. EXERCICES SUR LES LOIS CONTINUES 119

Figure 4.10 – Loi de Laplace : densité de probabilité f (x) et fonction de répartition F (x)
pour la valeur de paramètre a = 1.

(c) La figure 4.10 montre à la fois la densité de probabilité (en haut) et la fonction
de répartition (en bas).
(d) On calcule aisément (grâce à la fonction de répartition)
1
P (X ≤ 1) = 1 − exp(−1) ≈ 0, 8161
2
1
(e) De même P (X ≥ 2) = 1 − P (X ≤ 2) = exp(−2) ≈ 0, 06767.
2
(f) On remarque que la densité de probabilité est une fonction paire, donc l’inté-
grande dans l’expression de l’espérance est impaire :
ˆ +∞
E(X) = x × f (x) dx
−∞
L’espérance est donc nulle : E(X) = 0.
(g) D’après le résultat précédent, on a :
ˆ +∞ ˆ 0 2 ˆ +∞ 2
x x
V (X) = x2 ×f (x) dx = ×exp(x/a) dx+ ×exp(−x/a) dx
−∞ −∞ 2a 0 2a
120 CHAPITRE 4. LOIS DE PROBABILITÉ CONTINUES

Ce qui donne, après une double intégration par parties :

V (X) = 2 × a2

6. Une loi à deux paramètres


On suppose qu’une durée de fonctionnement T est une variable aléatoire continue
dont la densité de probabilité s’écrit (a réel strictement positif, et b réel strictement
négatif) :

a × x2 × exp(b × x) si x ≥ 0
f (x) =
0 sinon
(a) Exprimer la relation entre a et b.
(b) Tracer l’allure de la densité de probabilité pour a = 1 et b = −1.
(c) On observe qu’en moyenne la durée T de fonctionnement vaut 100 semaines.
Déterminer b.
(d) Déduire de ce qui précède la valeur de a.
Solution
(a) Si f est une densité de probabilité, on a la condition de normalisation :
ˆ +∞ ˆ +∞
f (x) dx = a × x2 × exp(b × x) dx = 1
0 0

Deux intégrations par parties successives nous conduisent à (avec nécessairement


b < 0) :
 
1 2 exp(b × x) +∞
= 2
a b b 0
Soit, en considérant que b < 0
b3
= −2
a
(b) L’allure de la densité de probabilité est donnée sur la figure 4.11.
(c) On déduit de l’énoncé de la question que l’espérance de la variable aléatoire T
(qui suit la loi à deux paramètres, par hypothèse) est de 100 semaines :
ˆ +∞ ˆ +∞
E(T ) = x × f (x) × dx = a × x3 × exp(b × x) dx = 100
0 0

En effectuant 3 intégrations par parties (fastidieuses mais sans difficulté), on


obtient que (avec b < 0) :

6×a 3
E(T ) = = − = 100
b4 b
3
On obtient donc b = − .
100
4.3. EXERCICES SUR LES LOIS CONTINUES 121

Figure 4.11 – Densité de probabilité de la loi à deux variables : a = 1 et b = −1. La


relation entre a et b est : b3 = −2a. La variable b est nécessairement négative, pour des
raisons de convergence.

b3
(d) Grâce à la relation = −2, on peut calculer
a
27
a=
2 × 106
7. Loi de Pareto
On considère que la variable aléatoire continue S = "valeur du salaire en nombre de
salaires minimum SMIC" suit une loi de Pareto de paramètre k = 2 avec sm = 1.
(a) Donner l’expression de la densité de probabilité de cette loi de Pareto. Vérifier
qu’il s’agit bien d’une fonction densité de probabilité.
(b) Soit s > sm . Déterminer l’expression de P (S > s).
(c) Trouver la valeur du salaire médian (qui partage en deux parties égales l’échelle
des salaires.)
(d) Déterminer la limite inférieure des salaires des 20 % les plus élevés dans la
population.
(e) Déterminer les salaires s1 , s2 , s3 permettant de répartir la population dans les
fractions : 5 % , 25 % et 75 % les plus hauts.
(f) Que peut-on dire ici de la variance ? Trouver un critère d’existence de la variance
pour la loi de Pareto en général.
Solution
(a) La densité de probabilité de Pareto s’écrit ici :

 skm 2
f (s) = k × k+1 = 3 si s ≥ sm = 1
 0 s s
si s < sm = 1
122 CHAPITRE 4. LOIS DE PROBABILITÉ CONTINUES

On vérifie la normalisation de cette densité de probabilité :


ˆ +∞  +∞
f (s)ds = −s−2 1 = 1
1

La valeur minimale qui est notée (sm ) de S correspond bien évidemment à 1


SMIC.
(b) La probabilité P (S > s) s’écrit, avec s > 1 :
+∞  +∞ 1
ˆ
P (S > s) = f (t) dt = −t−2 s = 2
s s

(c) La salaire médian M est tel que :

1 1
P (S > M ) = = 2
2 M
ce qui donne la valeur :

M= 2 ≈ 1, 414

(d) On cherche la valeur s telle que :


ˆ +∞
P (S > s) = f (t) dt = 0, 2
s

Soit encore

 +∞ 1
P (S > s) = −t−2 s = 2 = 0, 2
s
Les 
20 % les mieux payés de la population ont donc un salaire supérieur à
s = 1/0, 2 ≈ 2, 24.
(e) Comme dans la question précédente :

 +∞ 1
P (S > s1 ) = −t−2 s1 = 2 = 0, 05
s1

Soit s1 ≈ 4, 47.
 +∞ 1
P (S > s2 ) = −t−2 s2 = 2 = 0, 25
s2
Soit s2 ≈ 2, 0.

 +∞ 1
P (S > s3 ) = −t−2 s3 = 2 = 0, 75
s3
Soit s3 ≈ 1, 15.
4.3. EXERCICES SUR LES LOIS CONTINUES 123

(f) Par définition la variance est :

V (X) = E(X 2 ) − E(X)2

Si on se focalise sur le premier terme, on remarque que l’on doit calculer :


ˆ +∞
2
E(X 2 ) = x2 × 3 dx
1 x
Cette intégrale diverge logarithmiquement à l’infini. En réalité, la variance d’une
loi de Pareto de paramètre k ne peut exister que si k > 2.
8. Loi de Pareto 2
On considère que la variable aléatoire continue X suit une loi de Pareto de paramètre
k avec sm fixé.
(a) Rappeler l’expression de la densité de probabilité de la loi de Pareto.
(b) Déterminer l’expression de la fonction de répartition correspondante.
(c) Représenter l’allure de la fonction de répartition.
(d) Déterminer les conditions d’existence de l’espérance et de la variance.
3 99
(e) On observe les valeurs : P (X ≤ 10) = et P (X ≤ 50) = . Déterminer les
4 100
paramètres k et sm .
Solution
(a) La densité de probabilité de Pareto s’écrit :

 skm
f (s) = k × k+1
si s ≥ sm
 0 s si s < sm
(b) On trouve la fonction de répartition en calculant (si x > sm ) :
ˆ x
skm
F (x) = k × k+1 ds = 1 − skm × x−k
sm s
Ce qui donne finalement :

 skm
F (x) = 1− si x ≥ sm
 0 xk
si x < sm

(c) L’allure de la fonction de répartition est donnée sur la figure 4.12.


(d) L’espérance se calcule comme :
ˆ +∞ ˆ +∞ k
skm sm
E(X) = s × k k+1 ds = k × ds
sm s sm sk
Cette intégrale n’est convergente que si k > 1 et on trouve alors :
k × sm
E(X) =
k−1
124 CHAPITRE 4. LOIS DE PROBABILITÉ CONTINUES

Figure 4.12 – Fonction de répartition de la loi de Pareto, avec sm = 1 et l’indice k = 2, 1


(carré), k = 2, 5 (losange) et k = 3, 0 (triangle).

La variance se calcule comme :


 
k × sm 2
ˆ +∞ ˆ +∞ k
skm sm
V (X) = s2 × k k+1 ds − E(X)2 = k × ds −
sm s sm sk−1 k−1
Cette intégrale n’est convergente que si k > 2 et on trouve alors :
k × skm 2−k k 2 s2m ks2m
V (X) = sm − =
k−2 (k − 1)2 (k − 2)(k − 1)2

(e) On utilise deux fois la fonction de répartition :

99
F (50) = 1 − skm × 50−k =
100
et

3
F (10) = 1 − skm × 10−k =
4
Un peu de calcul donne :
1 − 99/100
(50/10)−k =
1 − 3/4
Ce qui donne :  
1 − 99/100
ln
1 − 3/4
k=− =2
ln(50/10)

On en déduit la valeur sm = 50 × 1 − 99/100 = 5.
4.3. EXERCICES SUR LES LOIS CONTINUES 125

9. Covariance de deux variables


On considère les deux variables aléatoires X1 et X2 , qui suivent des lois continues :

 2 × exp(−2x1 ) si x1 ≥ 0
3 × exp(−3x2 ) si x2 ≥ 0

0 si x1 ou x2 < 0
(a) Démontrer de façon générale la relation :

cov(X1 , X2 ) = E(X1 × X2 ) − E(X1 ) × E(X2 )

(b) Déterminer et calculer la valeur numérique de la covariance cov(X1 , X2 ).


(c) Que peut-on dire des deux variables X1 et X2 ?
(d) Déterminer et calculer la valeur numérique du coefficient de corrélation ρ(X1 , X2 ).
Solution
(a) On utilise la définition de la covariance, puis on développe le produit :

cov(X1 , X2 ) = E[(X1 − x1 )(X2 − x2 )] = E[X1 X2 − X2 x1 − X1 x2 + x1 × x2 ]

où x1 = E(X1 ) et x2 = E(X2 ).
On obtient donc :

cov(X1 , X2 ) = E(X1 X2 ) − E(X2 ) × x1 − E(X1 ) × x2 + x1 × x2

Soit après simplification

cov(X1 , X2 ) = E(X1 × X2 ) − E(X2 ) × E(X1 )

(b) On calcule les différentes espérances :


ˆ +∞ ˆ +∞
E(X1 × X2 ) = 6 × x1 × x2 × exp(−2x1 )exp(−3x2 ) dx1 dx2
0 0

Cette intégrale double est séparable :


ˆ +∞ ˆ +∞
E(X1 × X2 ) = 6 x1 × exp(−2x1 ) dx1 x2 × exp(−3x2 ) dx2
0 0

Ce qui donne, en intégrant par parties

     
1 x1 +∞ 1 x2 +∞
E(X1 ×X2 ) = 6 exp(−2x1 ) × − − × exp(−3x2 ) × − −
4 2 0 9 3 0

Soit enfin
1
E(X1 × X2 ) =
6
126 CHAPITRE 4. LOIS DE PROBABILITÉ CONTINUES

On calcule de même
+∞
1
ˆ
E(X1 ) = 2 x1 × exp(−2x1 ) dx1 =
0 2

et
+∞
1
ˆ
E(X2 ) = 3 x2 × exp(−3x2 ) dx2 =
0 3
Finalement la covariance est :
1 1 1
cov(X1 , X2 ) = E(X1 × X2 ) − E(X1 ) × E(X2 ) = − × =0
6 2 3

(c) La covariance nulle montre que les deux variables X1 et X2 sont probablement
décorrélées (En fait 2 variables indépendantes ont une covariance nulle, mais la
réciproque n’est pas toujours vraie).
(d) Le coefficient de coefficient de corrélation ρ(X1 , X2 ) est alors également nul, par
définition.
10. Loi normale et loi de Cauchy
La loi de Cauchy est une loi continue que l’on rencontre souvent dans des phénomènes
physiques. Si une variable aléatoire X suit une loi de Cauchy, la densité de probabilité
associée s’écrit (a > 0 et x0 réel ) :
1 a
f (x) = ×
π (x − x0 )2 + a2

Le langage python, grâce à la librairie scipy contient de nombreuses loi discrètes et


continues, dont la loi de Cauchy, avec les paramètres a = 1 et x0 = 0.
1 1
f (x) = ×
π x2 + 1

La densité correspondante peut être appelée par stats.cauchy.pdf(x). On peut aussi


utiliser la loi de Cauchy plus générale avec l’instruction stats.cauchy.pdf(x, x0 , a).
(a) En utilisant le langage python, écrire un programme qui permet de comparer sur
une même figure la densité de probabilité de la loi normale centrée d’écart-types
σ = 0.5 et σ = 1.0 et la densité de Cauchy avec les paramètres a = 1 et x0 = 0.
Représenter également les fonctions de répartition correspondantes.
(b) Comparer les densités normale et de Cauchy. Que peut-on observer graphique-
ment ?
(c) Que peut-on dire de l’espérance et de la variance de la loi de Cauchy ? Justifier.
(d) Quelle est la médiane de la loi de Cauchy générale ? Pourquoi ?
4.3. EXERCICES SUR LES LOIS CONTINUES 127

Solution
(a) Le code ci-dessous permet de tracer les courbes demandées, sur un domaine
x ∈ [−5, +5]. Il y a deux densités normales centrées, l’une d’écart-type σ = 0.5
et l’autre σ = 1.0.
La loi de Cauchy est de paramètres a = 1 et x0 = 0.
La figure 4.13 montre les résultats comparés.
1 #importation des librairies
2 import numpy as np
3 import matplotlib.pyplot as plt
4 import scipy.stats as stats
5 plt.figure()
6 plt.subplot(2,2,1)
7 X = np.linspace(-5,5,10000)
8 plt.plot(X,stats.norm.pdf(X,0,0.5),’k-’)
9 plt.plot(X,stats.norm.pdf(X,0,1),’r--’)
10 plt.title(u’Densite’)
11 plt.legend([u’sigma = 0.5’,u’sigma = 1’])
12 plt.grid()
13 plt.subplot(2,2,2)
14 plt.plot(X,stats.norm.cdf(X,0,0.5),’k-’)
15 plt.plot(X,stats.norm.cdf(X,0,1),’r--’)
16 plt.title(u’Fonction de repartition’)
17 plt.legend([u’sigma = 0.5’,u’sigma = 1’],loc=’lower right’)
18 plt.grid()
19 plt.subplot(2,2,3)
20 plt.plot(X,stats.cauchy.pdf(X),’k’)
21 plt.grid()
22 plt.subplot(2,2,4)
23 plt.plot(X,stats.cauchy.cdf(X),’k’)
24 plt.grid()
25 plt.show()

(b) On remarque que les densités normale et de Cauchy choisies dans l’exercice sont
symétriques par rapport à l’axe vertical x = 0. La densité de Cauchy tend vers
zéro aux extrémités de l’axe des abscisses, mais moins vite que la distribution
normale.
(c) On ne peut pas définir d’espérance et de variance (ainsi que l’écart-type) pour
la loi de Cauchy, car les intégrales qui les définissent sont divergentes. En effet,
dans le cas de l’espérance on doit évaluer :
ˆ +∞ ˆ +∞
1 x
E(X) = x × f (x) dx = 2 × dx
−∞ 0 π x2 + 1
Il est clair que cette intégrale diverge logarithmiquement comme :
+∞
1
ˆ
dx → +∞
x
Comme l’espérance est divergente, la variance et l’écart-type le seront aussi : la
loi de Cauchy n’a pas d’espérance, de variance et d’écart-type définis.
128 CHAPITRE 4. LOIS DE PROBABILITÉ CONTINUES

Figure 4.13 – Comparaison entre la loi normale (en haut) et la loi de Cauchy (en bas). A
gauche on a représenté les densités de probabilité et à droite les fonctions de de répartition.

(d) La médiane de la densité de Cauchy est par contre tout à fait définie : elle partage
en deux parties égales la représentation de la fonction densité ou correspond à la
valeur qui donne 1/2 pour la fonction de répartition : dans le cas choisi (x0 = 0),
la médiane vaut donc med = 0.
Si x0 = 0 on aura aussi med = x0 .
4.3. EXERCICES SUR LES LOIS CONTINUES 129

11. Relation entre une loi normale et une loi binomiale


On cherche ici à modéliser en python le lien entre une loi binomiale discrète et une
loi normale continue.
(a) Construire un programme python qui permet de superposer à la loi de proba-
bilité binomiale B(100, 0.1) la densité de probabilité normale N (10, 3). Peut-on
dire que l’accord est bon entre les deux représentations ? Comparer aux règles
d’approximation vues dans le cours.
(b) Construire un programme python qui permet de superposer à la loi de proba-
bilité binomiale B(100, 0.5) la densité de probabilité normale N (50, 5). Peut-on
dire que l’accord est bon entre les deux représentations ? Comparer aux règles
d’approximation vues dans le cours.
Solution
(a) Le code ci-dessous permet d’obtenir la figure 4.14 qui montre les deux résultats.
Rappelons que si
n × p × (1 − p) > 18

on peut associer les lois B(n, p) et et N (np, np(1 − p)).
1 #Comparaison loi Normale / loi Binomiale
2 #importation des librairies
3 import numpy as np
4 import matplotlib.pyplot as plt
5 import scipy.stats as stats
6 # initialisation
7 a=30
8 b=70
9 c=0
10 d=20
11 X = range(a,b)
12 XX=range(c,d)
13 #graphique
14 plt.figure()
15 plt.subplot(211)
16 plt.stem(XX,stats.binom.pmf(XX,100,0.1),markerfmt=’ko’)
17 YY = np.linspace(c,d,500)
18 plt.plot(YY,stats.norm.pdf(YY,10,3),’m--’)
19 plt.title(u’Comparaison de fonctions de masse’)
20 plt.legend([u’Loi N(10, 3)’,
21 u’Loi B(100,0.1)’])
22 plt.grid()
23 plt.subplot(212)
24 plt.stem(X,stats.binom.pmf(X,100,0.5),markerfmt=’ko’)
25 Y = np.linspace(a,b,50)
26 plt.plot(Y,stats.norm.pdf(Y,50,5),’m--’)
27 plt.legend([u’Loi N(50,5)’,
28 u’Loi B(100,0.5)’])
29 plt.grid()
30 plt.show()
130 CHAPITRE 4. LOIS DE PROBABILITÉ CONTINUES

Figure 4.14 – Comparaison entre la loi normale et la loi binomiale. En haut : N (10, 3) et
B(100, 0.1) et en bas : N (50, 5) et B(100, 0.5)

(b) En haut de la figure 4.14, on a superposé la densité de N (10, 3) et la loi de pro-


babilité B(100, 0.1). On voit que l’accord n’est pas très bon, ce qui est cohérent
avec le non respect de la condition n × p × (1 − p) > 18, puisque np(1 − p) vaut
9.
En bas de la figure 4.14, on a superposé la densité de N (50, 5) et la loi de
probabilité B(100, 0.5). On voit cette fois que l’accord est très bon, ce qui est
cohérent avec la condition n × p × (1 − p) > 18, puisque np(1 − p) vaut 25.
Chapitre 5

Théorèmes limites

5.1 Inégalité de Tchebychev


Si X est une variable aléatoire (discrète ou continue) ayant une espérance m et une
variance σ 2 toutes les deux finies, et si  > 0 est un réel positif, alors on a :

σ2
P (|X − m| ≥ ) ≤
2
Démonstration
On va démontrer l’inégalité de Tchebychev dans le cas d’une variable continue, nous
laissons le lecteur adapter cette démonstration au cas discret. On se donne une variable
aléatoire X de densité de probabilité f (x). Comme l’espérance et la variance de X existent
on a ˆ +∞
σ 2 = E[(X − m)2 ] = (x − m)2 × f (x) dx
−∞
Par construction l’intégrande de l’intégrale ci-dessus est forcément positif, donc si on
exclut de l’intégration la bande [m − , m + ], on a
ˆ
σ2 ≥ (x − m)2 × f (x) dx
|x−m|≥

Comme on suppose que |x − m| ≥  on a forcément


ˆ ˆ
σ2 ≥ 2 × f (x) dx = 2 f (x) dx
|x−m|≥ |x−m|≥

Comme par définition


ˆ
P (|X − m| ≥ ) = f (x) dx
|x−m|≥

On a enfin
σ2
P (|X − m| ≥ ) ≤
2
C’est l’inégalité de Tchebychev.

131
132 CHAPITRE 5. THÉORÈMES LIMITES

5.2 La loi des grands nombres (faible)


On se donne n variables aléatoires numérotées X1 , X2 , ..., Xn , indépendantes, qui
peuvent être discrètes ou continues, ayant toutes une même moyenne m et une même
variance σ 2 , toutes les deux finies. On note Sn la variable aléatoire
n

Sn = Xj
j=1

La loi des grands nombres faible indique que :


  
 Sn 
lim P  − m ≥  = 0
n→+∞ n

Sn
On dit que la suite converge en probabilité vers m.
n
Démonstration
Par hypothèse on peut écrire :

E(X1 ) = E(X2 ) = ... = E(Xn ) = m

et pour les variances


V (X1 ) = V (X2 ) = ... = V (Xn ) = σ 2

En utilisant Sn /n, on trouve facilement son espérance, par linéarité :


S   X + ... + X  1 n×m
n 1 n
E =E = × [E(X1 ) + .. + E(Xn )] = =m
n n n n
En ce qui concerne la variance de Sn , puisque X1 , ..., Xn sont indépendantes, on trouve :

V (Sn ) = V (X1 + .. + Xn ) = V (X1 ) + ... + V (Xn ) = nσ 2

On en déduit la variance de Sn /n :
S  1 σ2
n
V = 2
× V (Sn ) =
n n n

On peut maintenant utiliser l’inégalité de Tchebychev avec la variable aléatoire Sn /n


d’espérance m et de variance σ 2 /n :
 S   σ2
 n 
P  − m ≥  ≤ 2
n n
En prenant la limite, on obtient la loi des grands nombres faible :
 S  
 n 
lim P  − m ≥  = 0
n→+∞ n
5.3. LE THÉORÈME CENTRAL LIMITE 133

5.3 Le théorème central limite


On se donne n variables aléatoires numérotées X1 , X2 , ..., Xn , indépendantes, qui
peuvent être discrètes ou continues, ayant toutes une même espérance m et une même
variance σ 2 , toutes les deux finies. On note X la variable aléatoire
n
Sn 1 
X= = × Xj
n n
j=1

Le théorème central limite (TCL en abrégé) implique que  pour n assez grand la variable
σ 
aléatoire X suit approximativement une loi normale N m, √ .
n
X −m
C’est-à-dire, en prenant la variable réduite t = σ , que t suit la loi normale centrée

n
réduite N (0, 1) :

 X −m  1
ˆ b
lim P (a ≤ t ≤ b) = lim P a ≤ σ ≤ b = √ exp(−u2 /2) du
n→+∞ n→+∞ √ 2π a
n
L’intérêt du TCL réside dans le fait qu’il n’exige pas d’hypothèses sur la loi de proba-
bilité suivie, à part l’existence d’un écart-type et d’une moyenne finis.
La figure 5.1 donne la table de la loi normale centrée réduite de la fonction de répartition
gaussienne P (X ≤ t), à partir de t = 0, 00.
Rappelons un résultat très utile : une loi binomiale B(n, p) peut être approchée
par une loi normale N (m, σ), si n est assez grand :

B(n, p) ≈ N (m = n × p, σ = n × p × (1 − p))
On peut démontrer ce résultat en considérant n  variables aléatoires Xi qui suivent une loi
de Bernoulli (de moyenne p et d’écart-type σ = p(1 − p)) :

 p si x = 1
P (Xi = x) = 1 − p si x = 0

0 sinon
n
On forme d’abord la variable aléatoire moyenne X = Xi qui suit une loi binomiale
 i=1
B(n, p) de moyenne np et d’écart-type np(1 − p).
1  n
On forme la variable aléatoire moyenne X = × Xi qui suit une loi de probabilité
 n i=1

de moyenne m = p et d’écart-type σ = p(1 − p)/ n.
Le théorème central limite nous indique alors que si n est assez grand, la variable t suit
une loi normale centrée réduite N (0, 1), avec
X −m
t= √
σ/ n

On en déduit que la variable aléatoire X suit une loi normale N (np, n.p.(1 − p)).
134 CHAPITRE 5. THÉORÈMES LIMITES

Figure 5.1 – Table de la loi normale centrée réduite N (0, 1). Le tableau à double entrée
donne la valeur de la fonction de répartition associée à t. Pour t = 0, 52 on trouve P (X ≤
0, 52) = 0, 6985.

5.4 Exercices
1. Inégalité de Tchebychev
Soit X une variable aléatoire (discrète ou continue) d’espérance m et de variance σ 2
finies.
(a) Calculer la probabilité que X diffère de sa moyenne de 1, puis 2, puis 3, puis 4
écart-types σ.
(b) Représenter graphiquement le résultat précédent, et préciser l’intervalle qui nous
assure à 95 % d’encadrer la moyenne m.
(c) En une journée une usine fabrique en moyenne m = 100 voitures avec un écart-
type de σ = 8. Estimer la probabilité de produire, un jour donné, 113 voitures.
(d) On note X la variable aléatoire qui représente le nombre de particules détectées
par un compteur Geiger pendant le temps τ . On suppose que le nombre maxi-
mum de particules détectables pendant τ vaut 2 × 103 . En supposant que la
variable aléatoire X suive une loi de Poisson de paramètre m = 1000, déterminer
une majoration de la probabilité que X soit plus grand que 2 × 103 .
5.4. EXERCICES 135

Solution
(a) On pose, avec k entier strictement positif

k=
σ
L’inégalité de Tchebychev peut alors s’écrire

1
P (|X − m| ≥ k × σ) ≤
k2
Si k = 1, on se situe à un écart-type :

P (|X − m| ≥ σ) ≤ 1

En d’autres termes, la probabilité que X diffère de sa moyenne de plus de 1 σ


est inférieure à 1. Ce n’est pas très encourageant.
Pourtant, si k = 2 :
P (|X − m| ≥ 2 × σ) ≤ 0, 25

La probabilité que X diffère de sa moyenne de plus de 2 σ est inférieure à 25 %.


Si k = 3 :
P (|X − m| ≥ 3 × σ) ≤ 0, 11

La probabilité que X diffère de sa moyenne de plus de 3 σ est inférieure à 11 %.


Si k = 4 :
P (|X − m| ≥ 4 × σ) ≤ 0, 0625

La probabilité que X diffère de sa moyenne de plus de 4 σ est inférieure à


6,25 %.
(b) On peut tracer la courbe représentant la probabilité P (|X − m| ≥ k × σ) en
fonction de l’entier k, et on obtient la figure 5.2.
On peut dire que pour k = 5 on a P (|X − m| ≥ 5 × σ) ≤ 4 %.
Cela signifie que
P (|X − m| ≤ 5 × σ) ≈ 96 %

On peut considérer que l’intervalle [m − 5σ, m + 5σ] donne 96 % de chances


qu’un tirage de X soit inclus dans cet intervalle.
(c) Dans cette question la moyenne est de m = 100 et l’écart-type de σ = 8. On
utilise l’inégalité de Tchebychev pour écrire que :

82
P (|X − 100| ≥ 13) = P (X ≥ 113) + P (X ≤ 87) ≤ ≈ 37, 9 %
132

La majoration cherchée (production au delà de la moyenne plus ou moins 13


soit : m ± 1,625 σ) est donc de l’ordre de 38 %.
136 CHAPITRE 5. THÉORÈMES LIMITES

Figure 5.2 – Inégalité de Tchebychev : on a représenté la majoration de P (|X −m| ≥ k×σ)


ainsi que la probabilité complémentaire 1 − P .

(d) On sait qu’une loi discrète de Poisson (paramètre m) a pour espérance m et


pour variance m. L’inégalité de Tchebychev permet donc d’écrire :

V (X) 103
P (|X − 103 | ≥ 2 × 103 − 103 ) ≤ 3 3 2
= 6 ≈ 0, 1 %
(2 × 10 − 10 ) 10
Une majoration possible de la probabilité cherchée est cette fois grossièrement
de l’ordre de 0,1 %.
2. Une application du théorème central limite
On fabrique en série des téléphones tous identiques, et on veut déterminer leur durée
de vie moyenne. On dispose d’un échantillon de n = 100 téléphones, dont la mesure
de durée de vie moyenne (sur l’échantillon) est de 2, 7 ans. L’écart-type mesuré est
de 0, 3 ans.
(a) Déterminer une estimation de la durée de vie moyenne des téléphones T à l’aide
d’un intervalle, on prendra un niveau de confiance de 95 %.
(b) Déterminer une estimation de la durée de vie moyenne des téléphones T à l’aide
d’un intervalle, on prendra un niveau de confiance de 90 %.
(c) En construisant un programme Python, tracer la fonction densité de probabilité
normale centrée réduite ainsi que la fonction de répartition correspondante, et
retrouver les résultats des questions précédentes. Tracer également la relation
entre le niveau de confiance (en ordonnée) et la largeur de l’intervalle centré
sur la moyenne T . On pourra exprimer cette largeur en proportion A de l’écart-
type σ. Vous aurez besoin des librairies matplotlib pour les aspects graphiques,
5.4. EXERCICES 137

scipy pour la densité de probabilité normale, et numpy pour les traitements


mathématiques standards (vecteurs etc .. ).
Solution

(a) On note Tj la variable aléatoire durée de vie d’un téléphone. Le théorème


central limite nous indique que la variable aléatoire
n
1
T = Tj
n
j=1

σ
est distribuée (approximativement) suivant la loi normale N (m, √ ). On prend
n
T −m
la variable réduite t = σ qui suit alors la distribution normale centrée

n
réduite N (0, 1) :

b
1
ˆ
lim P (a ≤ t ≤ b) = √ exp(−u2 /2) du
n→+∞ 2π a

La distribution N (0, 1) est symétrique (par rapport à l’axe u = 0), et on cherche


la valeur A > 0 telle que :

P (−A ≤ t ≤ +A) = 0, 95

Un calcul simple et la lecture de la table de la loi normale centrée réduite, nous


donne que
P (t ≤ A) = 0, 975
Ce qui correspond à A = 1, 96. On en déduit ainsi que
√ √
P (m − 1, 96 × σ/ n ≤ T ≤ m + 1, 96 × σ/ n) = 0, 95

Comme la mesure de durée de vie moyenne (sur l’échantillon) est m = 2, 7 ans


et l’écart-type mesuré est de σ = 0, 3 ans, l’intervalle de confiance recherché à
95 % est finalement :
[2, 64 ; 2, 76]95 %

(b) Un calcul similaire au précédent montre que

P (−A ≤ t ≤ +A) = 0, 90

entraîne que
P (t ≤ A) = 0, 95
C’est-à-dire que A = 1, 65. Ce qui donne l’intervalle de confiance à 90 %

[2, 65 ; 2, 75]90 %
138 CHAPITRE 5. THÉORÈMES LIMITES

(c) On écrit le code python suivant, en introduisant la densité de probabilité normale


centrée réduite stats.norm.pdf et la fonction de répartition stats.norm.cdf
grâce à la librairie scipy.
On remplit les couples de vecteurs (x, densité) , (x, cumulatif), (xx, cumulatif2)
et (x4, P).
Cela permet d’obtenir la figure 5.3. En haut, à gauche, on obtient l’allure de la
loi normale centrée réduite (moyenne nulle et écart-type unité), dans l’intervalle
[-4,+4]. On remarque la symétrie de la loi par rapport à l’axe vertical x = 0.
On affiche, en haut à droite, la fonction de répartition P (t ≤ A), avec A dans
l’intervalle [-4,+4]. On a, en bas à gauche, un agrandissement de cette fonction
de répartition.
La courbe, en bas à droite, représente la probabilité P (−A ≤ t ≤ +A). On a
ainsi un intervalle de confiance à 95 % pour A = 1, 96 et de 68 % pour A = 1.
1 #importation des librairies utiles
2 import numpy as np
3 import scipy.stats as stats
4 import matplotlib.pyplot as plt
5 #generation des vecteurs (numpy) utiles
6 f= stats.norm.pdf # densite de probabilite normale
7 g= stats.norm.cdf # cumulatif
8 x=np.linspace (-4, 4 , 50 ) # −4 < t < 4 sur 50 points
9 x4=np.linspace (0, 3 , 50 ) #0 < t < 3 sur 50 points
10 densite=f(x)
11 cumulatif=g(x)
12 xx=np.linspace (1.5, 2.5 , 50 )
13 cumulatif2=g(xx)
14 P=2*g(x4)-1
15 #affichage graphique 2 X 2
16 plt.subplot(221)
17 plt.plot(x , densite , linewidth =3,color=’red’)
18 plt.title(’loi normale centree reduite’)
19 plt.grid()
20 plt.ylabel(’proba’)
21 plt.subplot(222)
22 plt.plot (x , cumulatif , linewidth =3,color=’black’ )
23 plt.title(’repartition de la loi normale’)
24 plt.ylabel(’proba’)
25 plt.grid()
26 plt.subplot(223)
27 plt.plot (xx , cumulatif2 , linewidth =3,color=’black’ )
28 plt.xlabel(’repartition de la loi normale’)
29 plt.ylabel(’proba’)
30 plt.grid()
31 plt.subplot(224)
32 plt.plot (x4 , P, linewidth =3,color=’blue’ )
33 plt.xlabel(’A’)
34 plt.ylabel(’P(-A<t<A)’)
35 plt.grid()
36 #sauvegarde en png
5.4. EXERCICES 139

37 plt.savefig("normal_distribution.png", bbox_inches=’tight’)
38 plt.show()

Figure 5.3 – En haut : loi normale centrée réduite et fonction de répartition correspondante
pour l’intervalle [-4,+4]. En bas : agrandissement de la fonction de répartition sur [1.5, 2.5]
et en bas à droite on représente la probabilité P (−A < t < +A) en fonction de A pour la
loi normale centrée réduite.

3. Une autre application du théorème central limite


D’après une étude de marché, 45 % des sondés se disent influencés par la publicité
pour les chaussures A, c’est-à-dire tentés par un achat de chaussures A. Un échantillon
(supposé représentatif) de 100 personnes est interrogé dans un grand magasin. On
définit la variable aléatoire X = nombre de clients (sur un total de n = 100) tentés
par un achat de chaussures A.
(a) Définir les caractéristiques de X (loi suivie, espérance, variance).
(b) Déterminer la probabilité qu’au moins 52 personnes disent être tentés par un
achat de chaussures A.
(c) Déterminer la probabilité qu’au moins 47 personnes disent être tentés par un
achat de chaussures A.
140 CHAPITRE 5. THÉORÈMES LIMITES

Solution
(a) On définit la variable aléatoire X = nombre de clients (sur un total de n=100)
tentés par un achat de chaussures A. La variable X suit une loi binomiale de
forme B(n = 100, p = 0, 45). On sait que l’espérance E(X) = 45 et la variance
V (X) = np(1 − p) = 24, 75.
(b) On veut déterminer la valeur P (X ≥ 52). On définit la variable aléatoire
X − 45
Y =√ . On applique le théorème central limite en considérant que Y suit
24, 75
approximativement une loi normale N (0, 1) centrée réduite. Cela nous ramène
à
P (X ≥ 52) ≈ P (Y ≥ 1, 407) = 1 − P (Y ≤ 1, 407)
La lecture de la figure 5.1 nous donne :

P (X ≥ 52) ≈ 1 − P (Y ≤ 1, 407) = 1 − 0, 9207 = 7, 93 %


(c) De façon similaire

P (X ≥ 47) ≈ P (Y ≥ 0, 402) = 1 − P (Y ≤ 0, 402)

soit encore

P (X ≥ 47) ≈ 1 − P (Y ≤ 0, 402) = 1 − 0, 6554 = 34, 5 %

4. Deux inégalités
(a) Démontrer l’inégalité, pour −n ≤ t ≤ +n :
  n−t  
−t2 C2n −t2
exp ≤ n ≤ exp
n−t+1 C2n n+t

Il est utile de remarquer, pour cette démonstration, qu’on a l’encadrement pour


tout x strictement positif :

x−1
≤ ln(x) ≤ x − 1
x
Ce que résume la figure 5.4
490
C1000
(b) En utilisant la relation précédente, encadrer numériquement le quotient 500 .
C1000
n−t
C2n
(c) Représenter sur un graphique les variations du rapport R = n pour n = 500
C2n
et t variant dans l’intervalle des entiers [−20, 20] puis dans [−50, 50].
Trouver les valeurs de t donnant un pourcentage d’environ 70 % puis 50 %.
(d) Démontrer l’inégalité, pour 1 ≤ k ≤ +n :

k−1
 k
p C2n 2n−1
C2n < n ×2
C2n
p=0
5.4. EXERCICES 141

x−1
Figure 5.4 – Double inégalité : ≤ ln(x) ≤ x − 1
x

Solution
n−t
C2n
(a) On note A = n ≤ 1 avec t entier tel que −n ≤ t ≤ +n. On écrit :
C2n
1 n
C2n (n − t)!(n + t)!
= n−t = ≥1
A C2n n!n!
Soit encore
1 (n + t)(n + t − 1)...(n + 1)
=
A n(n − 1)(n − 2)...(n − t + 1)
On peut alors prendre le logarithme de 1/A :
1 n+t n+t−1 n+1
ln = ln + ln ... + ln
A n n−1 n−t+1
En utilisant l’inégalité proposée, on obtient

1 t t t t
ln ≤ + + ... + ≤t×
A n n−1 n−t+1 n−t+1
Ce qui donne
t2
lnA ≥ −
n−t+1
D’où l’inégalité :
n−t
C2n −t2 /(n−t+1)
A= n ≥e
C2n
En prenant l’autre versant de l’inégalité proposée, on trouve
1 t t t
ln ≥ + ... + ≥t×
A n+1 n+t n+t
On en déduit
n−t
C2n −t2 /(n+t)
A= n ≤e
C2n
142 CHAPITRE 5. THÉORÈMES LIMITES

Ce qui nous donne :


  n−t  
−t2 C2n −t2
pour − n ≤ t ≤ +n : exp ≤ n ≤ exp
n−t+1 C2n n+t

(b) Dans le cas où n = 500 et t = 10, le résultat de la question précédente montre :


490
C1000
0, 8157347 ≤ 500 ≤ 0, 8219477
C1000
n−t
C2n
(c) On trace facilement la représentation du rapport R = n , voir les figures
C2n
5.5 et 5.6. Pour t = ±14, le rapport R vaut environ 70 %, et pour t = ±18 le
rapport R vaut environ 50 %.
500−t
On constate qu’une faible valeur de l’entier t éloigne considérablement C1000
de la valeur maximale C1000 .
500

500−t
C1000
Figure 5.5 – Représentation de l’encadrement du rapport R = 500 avec l’entier t dans
C1000
l’intervalle [−20 , +20].
5.4. EXERCICES 143

500−t
C1000
Figure 5.6 – Représentation de l’encadrement du rapport R = 500 avec l’entier t dans
C1000
l’intervalle [−50 , +50]. On perçoit l’allure gaussienne de cette courbe.

n−t
(d) On part de C2n et on pose k = n − t, en écrivant :

k
C2n
n−t n n
C2n = n × C2n ≤ K × C2n
C2n
n−1
C2n
où on a posé la constante (n fixé) K = n
C2n
Cela permet d’écrire l’inégalité :
n−t−1
n−t−1 C2n n−1 n−1
C2n = n−1 × C2n ≤ K × C2n
C2n

et pour tout i tel que 0 ≤ i ≤ n − t :


n−t−i n−i
C2n ≤ K × C2n

On pose alors
 0 + C 1 + ... + C n−t−1
a = C2n 2n 2n
n−t n−t+1 n−1
b = C2n + C2n + ... + C2n
On remarque que la somme a possède n − t termes et la somme b seulement t.
Par ailleurs la somme a + b peut s’écrire :
n

i n
a+b= C2n − C2n
i=0
144 CHAPITRE 5. THÉORÈMES LIMITES

On construit l’inégalité sur t termes :


n−t−1 n−t−2 n−2t n−1 n−2 n−t
C2n + C2n + ... + C2n < K × (C2n + C2n + ... + C2n )=K ×b

de même

n−2t−1 n−2t−2 n−3t n−t−1 n−t−2 n−2t


C2n +C2n +...+C2n < K×(C2n +C2n +...+C2n ) < K×K×b
 
n−t
On poursuit ce processus exactement fois (entier supérieur le plus
t
n−t
proche de ) pour construire la majoration de la somme a, mais on peut en
t
fait l’écrire sous forme d’une somme infinie (en remarquant que K < 1) :
n

a < K × b + K 2 × b + ... = b × lim Kp
n→+∞
p=1

Sachant que K < 1 on trouve


K ×b
a<
1−K

Étant donné les propriétés des coefficients du binôme, on a :

n
 2n
p n 1  p
C2n − C2n < × C2n
2
p=0 p=0

et sachant que

2n
 p
C2n = 22n
p=0

On obtient que
n
 p n
a+b= C2n − C2n < 22n−1
p=0

On peut donc écrire :


K ×b K × (22n−1 − a)
a< <
1−K 1−K
Soit encore  
K 22n−1 × K
a× 1+ <
1−K 1−K
Ce qui donne l’inégalité simplifiée
k
C2n 2n−1
a< n ×2
C2n
5.4. EXERCICES 145

Ce qui donne enfin l’inégalité recherchée :

k−1
 k
p C2n 2n−1
a= C2n < n ×2
C2n
p=0

5. Loi des grands nombres et lancers de pièce


On lance une pièce 2n fois (n étant supposé grand), et on compte le nombre de piles
obtenus.
(a) On se donne t entier positif, 0 ≤ t ≤ n. Montrer que la probabilité P d’obtenir
moins de n − t ou plus de n + t piles est telle que
 
−t2
P ≤ exp
n+t

On pourra utiliser les inégalités suivantes (démontrées dans l’exercice précé-


dent), pour 0 ≤ k ≤ n :
k−1
 k
p C2n 2n−1
C2n < n ×2
C2n
p=0

et pour −n ≤ t ≤ +n :
  n−t  
−t2 C2n −t2
exp ≤ n ≤ exp
n−t+1 C2n n+t

(b) On note Q la probabilité d’avoir un nombre de piles dans l’intervalle [n−t, n+t].
Déterminer t pour que Q soit supérieure à 95 %.
(c) Déterminer la valeur de 2n pour que l’on obtienne entre 49,9 % et 50,1 % de
piles avec une probabilité Q supérieure à 99 %.
Solution
(a) On note Ak l’ensemble des événements possédant k piles pour 2n lancers.
k est un entier prenant ses valeurs entre 0 et 2n inclus. Les Ak forment donc un
système complet de 2n + 1 événements de l’ensemble univers Ω (non vide).
On rappelle qu’un système complet est un ensemble fini de parties non vides
de Ω, deux à deux disjointes et dont l’union forme l’ensemble univers Ω :
— si i = j alors Ai ∩ Aj = ∅
— i Ai = Ω
La probabilité de Ak s’écrit :
k
C2n
P (Ak ) = 2n
2
La probabilité P recherchée s’écrit donc :
n−t−1
 2n

P = P (Ak ) + P (Ak )
k=0 k=n+t+1
146 CHAPITRE 5. THÉORÈMES LIMITES

En utilisant la première inégalité recommandée (et la symétrie des coefficients


du binôme), on trouve
n−t
C2n C n−t
22n × P < n × 22n−1 + 2nn ×2
2n−1
C2n C2n

soit
n−t
C2n
P < n
C2n
ce qui permet de conclure que pour t entier positif
 
−t2
P ≤ exp
n+t

(b) Il est clair que si on veut Q ≥ 95 %, cela implique que le complémentaire

P =1−Q≤5 %

Soit encore
t2
≥ ln(1/0, 05) ≈ 2, 9957 = α
n+t
On est amené à résoudre une équation du second degré en t, en supposant que
n est grand :
t2 − αt − αn = 0
La solution retenue s’écrit (n supposé grand)

α + α2 + 4αn √
t= ≈ αn
2
enfin en arrondissant α à la valeur 3, la valeur de t à partir de laquelle on a
Q ≥ 95 % est √
t ≈ 3n
On dresse le petit tableau ci-dessous :
n 106 107 108 109
t 1732 5478 17321 54773
P 0,050055 0,049827 0,049804 0,049791
Q=1−P 0,94995 0,95017 0,95020 0,95021
Ce qui montre que pour n ≈ 106 , soit 2n ≈ 2 × 106 lancers de la pièce, on a
environ 95 % de chances d’obtenir entre 998 268 et 1 001 732 piles sur un total
de 2 000 000 de lancers.
n−t n+t
(c) On veut, dans cette question que = 0, 499 et = 0, 501 ce qui corres-
2n 2n
pond à une valeur t = 0, 002n.
Comme par ailleurs Q = 0, 99 cela implique que

P = 0, 01 ≈ exp(−t2 /(n + t)) = exp(−n/250 500)


5.4. EXERCICES 147

On trouve finalement que


n ≥ 1 153 596
Ce qui montre que si on lance 2n ≥ 2 307 192 fois la pièce, on aura au moins
99 % de chance d’obtenir entre 49,9 % et 50,1 % de sorties à pile.
6. Convergence en moyenne et convergence en probabilité
On veut essayer d’illustrer dans cet exercice la différence entre la convergence en
probabilité et la convergence en moyenne. Il ne s’agit pas ici d’effectuer des calculs
théoriques qui dépassent le niveau de cet ouvrage, mais bien d’écrire des programmes
en langage python qui donnent le goût de la notion sans forcément la difficulté théo-
rique qui lui est inhérente.
On considère une suite (Xn ) de variables aléatoires.
— On dit que la suite (Xn ) de variables aléatoires converge en probabilité vers une
variable aléatoire X si pour tout  > 0 on a :

lim P (|Xn − X| ≥ ) = 0
n→+∞

Il faut bien noter que la convergence en probabilité n’entraîne pas la convergence


des espérances. Remarquons aussi que la condition précédente peut s’écrire

lim P (|Xn − X| ≤ ) = 1
n→+∞

— On dit que la suite (Xn ) de variables aléatoires converge en moyenne vers une
variable aléatoire X si :
lim E(|Xn − X|) = 0
n→+∞

— On dit que la suite (Xn ) de variables aléatoires converge en loi vers une variable
aléatoire X si la fonction de répartition de Xn tend vers celle de X lorsque n tend
vers l’infini, pour tout réel t :
ˆ t ˆ t
lim Fn (t) = lim fn (x) dx = F (t) = f (x) dx
n→+∞ n→+∞ −∞ −∞

On admettra ici que la convergence en probabilité implique la convergence en loi.


Un cours plus élaboré de mathématiques permet de démontrer la relation entre ces
trois types de convergence :

convergence en moyenne → convergence en probabilité → convergence en loi

Nous allons appliquer ces notions au cas du lancer de pièce. On considère qu’on lance
n fois une pièce, et on note Xi le résultat du ieme lancer : Xi = 0 si face sort et
Xi = 1 si pile sort.
1  n
Notre suite de variables aléatoires est Yn = X n = × Xi , c’est-à-dire la moyenne
n i=1
empirique des sorties.
(a) Précisez, pour tout entier i fixé entre 1 et n, la loi suivie par la variable Xi .
Quelle est son espérance ? sa variance ?
148 CHAPITRE 5. THÉORÈMES LIMITES

(b) Étudiez la convergence en moyenne de Yn = X n en écrivant un programme


python qui permet de représenter l’espérance E(|Yn − X|) = E(|X n − 1/2|) en
fonction de n.
(c) Étudiez la convergence en probabilité de Yn = X n en écrivant un programme
python qui permet de représenter P (|X n − 1/2|) ≥  en fonction de n.
Solution
(a) La loi suivie par la variable aléatoire Xi est une loi de Bernoulli de paramètre
p = 1/2, soit : 
 p si x = 1
P (Xi = x) = 1 − p si x = 0

0 sinon
On sait que l’espérance de cette variable vaut E(Xi ) = p = 1/2 et la variance
vaut V (Xi ) = p(1 − p) = 1/4.
(b) On veut construire un programme qui va permettre de remplir la liste nommée
ListeEsperance, chaque terme de cette liste représentant, pour une valeur de
n croissante, la valeur de l’espérance :

Cnk  k 1 
n

E(|Yn − X|) = E(|X n − 1/2|) =  − 
2n n 2
k=1

Dans notre programme n varie de 1 à 200. Il faut remarquer que dans notre
problème, la probabilité de tirer k piles parmi n essais est :

Cnk
P =
2n
Le code est le suivant :
1 # librairies graphique et math (pour les combinaisons)
2 import matplotlib.pyplot as plt
3 import math
4 #fonction principale ( calcul de la proba Pk)
5 def Prob(k,n):
6 Pk = math.comb(n,k)/2**n
7 return Pk
8 # initialisation des parametres
9 ListeEsperance=[]
10 ListeCompteur=[]
11 n=200
12 #boucle principale du calcul
13 for j in range(1,n+1):
14 esperance=0
15 for i in range(j+1):
16 esperance=esperance + Prob(i,j)*math.fabs(i/j -0.5)
17 #print(esperance)
18 ListeEsperance.append(esperance)
19 ListeCompteur.append(j)
20 #affichage graphique
5.4. EXERCICES 149

21 plt.plot(ListeCompteur,ListeEsperance,’ro’,label="en moyenne")
22 plt.plot(ListeCompteur,ListeEsperance,’black’)
23 plt.title("Convergence en moyenne")
24 plt.ylabel("probabilite")
25 plt.xlabel("entier n ")
26 plt.grid()
27 plt.legend()
28 plt.savefig(’Moyenne.png’)
29 plt.show()

On obtient la figure 5.7, qui donne l’allure de la convergence en moyenne, dans


le cas de notre problème.

Figure 5.7 – Représentation de la convergence en moyenne pour notre problème lié à la


loi de Bernoulli B(1/2).

(c) On veut construire un programme qui va permettre de remplir la liste nommée


ListeProba, chaque terme de cette liste représentant, pour une valeur de n
croissante, la valeur de la probabilité P :
 Cnk
P (|Xn − 0.5| ≥ ) =
2n
|k/n−0.5|≥
k

Dans notre programme n varie de 1 à 300, et on a choisi trois valeurs du para-


mètre  : 0,05 puis 0,1 puis 0,3. Pour la convergence en probabilité on utilise le
code python suivant :
1 # librairies graphique et math (pour les combinaisons)
2 import matplotlib.pyplot as plt
150 CHAPITRE 5. THÉORÈMES LIMITES

3 import math
4 #fonction principale ( calcul de la proba Pk)
5 def Prob(k,n):
6 Pk = math.comb(n,k)/2**n
7 return Pk
8 # initialisation des parametres
9 ListeProba=[]
10 ListeProba2=[]
11 ListeProba3=[]
12 ListeCompteur=[]
13 n=300
14 epsilon1=0.1
15 epsilon2 = 0.05
16 epsilon3=0.3
17 #boucle principale du calcul pour la convergence en proba
18 #avec 3 epsilon : 0.1 et 0.05 et 0.3 on aura 3 courbes distinctes
19 for j in range(0,n+1):
20 proba=0
21 proba2=0
22 proba3=0
23 for i in range(0,j+1):
24 if ((i>= j*(0.5+epsilon1)) or(i<=j*(0.5-epsilon1) )):
25 proba=proba + Prob(i,j)
26 if ((i>= j*(0.5+epsilon2)) or(i<=j*(0.5-epsilon2) )):
27 proba2=proba2 + Prob(i,j)
28 if ((i>= j*(0.5+epsilon3)) or(i<=j*(0.5-epsilon3) )):
29 proba3=proba3 + Prob(i,j)
30 ListeProba.append(proba)
31 ListeProba2.append(proba2)
32 ListeProba3.append(proba3)
33 ListeCompteur.append(j)
34 #affichage graphique
35 plt.plot(ListeCompteur,ListeProba2,’black’,label="epsilon = 0.05")
36 plt.plot(ListeCompteur,ListeProba,’r’,label="epsilon = 0.1")
37 plt.plot(ListeCompteur,ListeProba3,’b’,label="epsilon = 0.3")
38 plt.title("Convergence en Proba")
39 plt.ylabel("probabilite")
40 plt.xlabel("entier n ")
41 plt.xlim(0,300)
42 plt.grid()
43 plt.legend()
44 plt.savefig(’enproba.png’)
45 plt.show()

On obtient la figure 5.8 avec n = 300 et la figure 5.9 avec n = 100. Comme on
peut le voir graphiquement, la notion de convergence en probabilité est différente
de la notion de convergence en moyenne de la question (b).
5.4. EXERCICES 151

Figure 5.8 – Représentation de la convergence en probabilité pour trois valeurs du para-


mètre , pour n=300 dans le cas du lancer de pièces.

Figure 5.9 – Représentation de la convergence en probabilité pour trois valeurs du para-


mètre , pour n=100.

7. Élections, pièges à théorème !


(a) On interroge n = 800 électeurs (d’un panel supposé représentatif) sur un vote
départageant le candidat A et le candidat B. Le sondage donne 52 % pour A et
48 % pour B. Indiquer, avec une probabilité de 95 % puis de 99 %, les limites
dans lesquelles se situe la proportion de votants pour le candidat A. On pourra
utiliser n variables aléatoires Xi indépendantes suivants une loi de Bernoulli,
152 CHAPITRE 5. THÉORÈMES LIMITES

représentant la préférence de l’électeur i en faveur de A (Xi = 1) ou en faveur


de B (Xi = 0).
(b) On interroge n = 8000 électeurs (d’un panel supposé représentatif) sur un vote
départageant le candidat A et le candidat B. Le sondage donne 52 % pour A et
48 % pour B. Indiquer, avec une probabilité de 95 % puis de 99 %, les limites
dans lesquelles se situe la proportion de votants pour le candidat A.
(c) Écrire un programme python qui permet de tracer cet intervalle limite en fonc-
tion de n, avec une probabilité de 95 % puis de 99 %.
Solution
(a) On note Xi la variable aléatoire qui donne 1 si le ieme électeur est favorable à
A et 0 s’il est favorable à B. L’indice i varie de 1 à n, et Xi suit une loi de
Bernoulli B(p), où p est la proportion (inconnue) d’électeurs en faveur de A.
n
Si on forme la somme S = Xi , celle-ci suit une loi binomiale B(n, p) de
i=1
moyenne n × p et de variance V (S) = n × p × (1 − p).
Le théorème central limite nous permet d’approcher

B(n, p) ≈ N (np, n.p.(1 − p)

Par ailleurs la lecture de la table en figure 5.1 nous donne c ≈ 1, 96 pour une
probabilité fixée à 0,95 :

P (−c ≤ t ≤ +c) = 2P (t ≤ c) − 1 = P (−1, 96 ≤ t ≤ +1, 96) ≈ 0, 95

S − n.p
Ce qui correspond, avec la variable t =  à:
n.p.(1 − p)
   
P − 1, 96 p(1 − p)/n ≤ S/n − p ≤ +1, 96 p(1 − p)/n ≈ 0, 95

soit encore
   
P S/n − 1, 96 p(1 − p)/n ≤ p ≤ S/n + 1, 96 p(1 − p)/n ≈ 0, 95

Si n est grand, on peut confondre le paramètre inconnu p avec la fréquence f ,


et faire S/n ≈ f , soit
 
 f (1 − f ) f (1 − f ) 
P f − 1, 96 ≤ p ≤ f + 1, 96 ≈ 0, 95
n n

Dans cette question f = 0, 52 et n = 800 ce qui donne finalement

P (0, 486 ≤ p ≤ 0, 555) ≈ 0, 95

d’où un intervalle de confiance (à 95 %) qui est environ :

[0, 49; 0, 55]95%


5.4. EXERCICES 153

Le calcul à 99 % de confiance se fait de façon similaire, avec la valeur t = 2, 57


 
 f (1 − f ) f (1 − f ) 
P f − 2, 57 ≤ p ≤ f + 2, 57 ≈ 0, 99
n n
d’où un intervalle à 99 % de confiance qui est environ :

[0, 475; 0, 565]99%

(b) Un calcul similaire au précédent donne cette fois :

P (0, 51 ≤ p ≤ 0, 53) ≈ 0, 95

d’où un intervalle à 95 % de confiance valant environ :

[0, 51; 0, 53]95%

Pour le niveau de confiance de 99 %, on trouve

[0, 505; 0, 534]99%

(c) Le code python suivant permet de représenter les intervalles de confiance à 95


% et 99 % en fonction du nombre n de personnes interrogées dans le panel. On
retrouve, en particulier, les valeurs calculées précédemment pour n = 800 et
pour n = 8000.
1 # librairies graphique et math (pour les combinaisons)
2 import matplotlib.pyplot as plt
3 import math
4 # initialisation des parametres
5 ListeMax95=[]
6 ListeMin95=[]
7 ListeMax99=[]
8 ListeMin99=[]
9 ListeN=[]
10 p=800.0
11 f=0.52
12 #boucle principale du calcul : remplissage 95% de confiance
13 for i in range(1,13):
14 n=p+(i-1)*800
15 max=f +1.96*math.sqrt(f*(1-f)/n)
16 min=f -1.96*math.sqrt(f*(1-f)/n)
17 ListeMax95.append(max)
18 ListeMin95.append(min)
19 max2=f +2.57*math.sqrt(f*(1-f)/n)
20 min2=f -2.57*math.sqrt(f*(1-f)/n)
21 ListeMax99.append(max2)
22 ListeMin99.append(min2)
23 ListeN.append(n)
24 #affichage graphique
25 plt.subplot(211)
154 CHAPITRE 5. THÉORÈMES LIMITES

26 plt.plot(ListeN,ListeMax95,’b’,label=" sup 95 %")


27 plt.plot(ListeN,ListeMax95,’r+’)
28 plt.plot(ListeN,ListeMin95,’b--’,label=" inf 95 %")
29 plt.plot(ListeN,ListeMin95,’r+’)
30 plt.title("Intervalle de confiance 95 %")
31 plt.ylabel("bornes intervalle")
32 plt.xlim(800,8000)
33 plt.grid()
34 plt.legend()
35 plt.subplot(212)
36 plt.plot(ListeN,ListeMax99,’b’,label=" sup 99 %")
37 plt.plot(ListeN,ListeMax99,’r+’)
38 plt.plot(ListeN,ListeMin99,’b--’,label=" inf 99 %")
39 plt.plot(ListeN,ListeMin99,’r+’)
40 plt.title("Intervalle de confiance 99 %")
41 plt.ylabel("bornes intervalle")
42 plt.xlabel("n personnes ")
43 plt.xlim(800,8000)
44 plt.grid()
45 plt.legend()
46 plt.savefig(’sondage.png’)
47 plt.show()

Figure 5.10 – Intervalles de confiance à 95 % et à 99 % en fonction du nombre n de


personnes interrogées.
Chapitre 6

Moments et fonctions
caractéristiques

6.1 Distributions jointes


Dans le cas continu, si X et Y sont deux variables aléatoires, on peut définir la densité
de probabilité jointe f (x, y) comme :
1. f (x, y) ≥ 0 pour tout couple x, y ∈ R2 ,

´ +∞ ´ +∞
2. −∞ −∞ f (x, y) dx dy = 1 (condition de normalisation),

´b´d
3. P (a < x < b, c < y < d) = a c f (x, y) dx dy.

Dans le cas des ´variables aléatoires


 discrètes, il est facile d’adapter, en remplaçant en
particulier le signe par le signe .
On peut déduire de ce qui précède´ les ´définitions des diverses fonctions de répartition :
a b
— F (a, b) = P (X ≤ a, Y ≤ b) = −∞ −∞ f (x, y) dx dy
´ a ´ +∞
— F1 (a) = P (X ≤ a) = −∞ −∞ f (x, y) dy dx
´b ´ +∞
— F2 (b) = P (Y ≤ b) = −∞ −∞ f (x, y) dx dy

Si les deux variables aléatoires X et Y sont indépendantes, alors on admet que, pour
tout (x, y) ∈ R2 :
f (x, y) = f1 (x) × f2 (y)

6.2 Changement de variable


On considère une variable aléatoire continue X dont la densité de probabilité est f (x).
On se donne la nouvelle variable aléatoire Y = H(X) à laquelle on associe la densité de
probabilité g(y). On suppose que la fonction H est bijective.

155
156 CHAPITRE 6. MOMENTS ET FONCTIONS CARACTÉRISTIQUES

En remarquant l’égalité des probabilités infinitésimales dP = f (x) dx = g(y) dy, on


obtient la formule qui permet de passer d’une densité à l’autre :
 
 dx 
g(y) = f (x) ×  
dy

Comme les densités de probabilité f et g sont positives par construction, on introduit


les valeurs absolues dans la formule précédente.
On verra dans les exercices comment traiter le cas où H n’est pas bijective, quand cela
est possible.

6.3 Convolution
On admet dans toute la suite que la somme Z = X + Y de deux variables aléatoires
continues X et Y admet une densité de probabilité g(z) qui s’exprime en fonction de la
densité jointe f (x, y) comme :
ˆ +∞
g(z) = f (x, z − x) dx
−∞

Si les variables X et Y sont indépendantes, alors f (x, y) = f1 (x) × f2 (y) et g se définit


comme le produit de convolution de f1 et f2 :
ˆ +∞
g(z) = f1 (x) × f2 (z − x) dx = (f1 ∗ f2 )(z)
−∞

Le produit de convolution (noté ∗) est commutatif, associatif et distributif par rapport


à l’addition :
— f1 ∗ f2 = f2 ∗ f1
— f1 ∗ (f2 ∗ f3 ) = (f1 ∗ f2 ) ∗ f3 = f1 ∗ f2 ∗ f3
— f1 ∗ (f2 + f3 ) = f1 ∗ f2 + f1 ∗ f3

6.4 Moments d’ordre p


On définit le moment d’ordre p (où p est un entier supérieur ou égal à 0) d’une variable
aléatoire X, possédant une espérance m, la quantité :

mp = E[(X − m)p ]

Si on se restreint au cas d’une variable aléatoire continue, de densité de probabilité f (x)


(mais il est facile de généraliser les formules suivantes au cas discret), le moment d’ordre p
s’écrit :
ˆ +∞
mp = (x − m)p × f (x) dx
−∞

On remarque que si p = 0 alors m0 = 1 , si p = 1 alors m1 = 0 et si p = 2 alors


m2 = σ 2 .
6.5. FONCTION GÉNÉRATRICE 157

Rappelons en effet que la variance σ 2 est définie comme


ˆ +∞
σ 2 = E([X − m]2 ) = E(X 2 ) − E(X)2 = (x − m)2 f (x) dx = m2
−∞

On définit le moment d’ordre p de X à l’origine comme :



mp = E[X p ]

Soit aussi : ˆ +∞

mp = xp × f (x) dx
−∞

En tenant compte de la définition du moment d’ordre p et du moment d’ordre p à


l’origine, on remarque que en notant m la moyenne (ou espérance) et σ 2 la variance :
 
 m0 = 1 m0 = 1

m1 = m m1 = 0
 
m2 = m2 + σ 2 m2 = σ 2

6.5 Fonction génératrice


On définit la fonction génératrice des moments de X comme :
ˆ +∞
tX
MX (t) = E[e ]= etx × f (x) dx
−∞

Le développement de Taylor de la fonction génératrice donne (en admettant la conver-


gence de la série) :

  +∞
  t2  t3 tp
MX (t) = 1 + m1 × t + m2 × + m3 × + ... = mp ×
2! 3! p!
p=0

On admet le théorème d’unicité suivant : Soient les variables aléatoires X de fonction


génératrice MX (t) et Y de fonction génératrice MY (t), alors X et Y ont même distribution
de probabilité si et seulement si, pour tout t : MX (t) = MY (t).

6.6 Fonction caractéristique


En introduisant le i complexe dans la fonction génératrice, autrement dit en remplaçant
t par it on définit la fonction caractéristique :
ˆ +∞
φX (t) = E[eitX ] = eitx × f (x) dx
−∞

Le cas discret est facilement transposable.


158 CHAPITRE 6. MOMENTS ET FONCTIONS CARACTÉRISTIQUES

Le développement de Taylor de la fonction caractéristique donne (en admettant la


convergence de la série) :

 +∞
  t2  t3  tp
φX (t) = 1 + i × m1 × t − m2 × + i3 × m3 × + ... = ip × mp ×
2! 3! p!
p=0

On admet le théorème d’unicité : Soient les variables aléatoires X de fonction caracté-


ristique φX (t) et Y de fonction caractéristique φY (t), alors X et Y ont même distribution
de probabilité si et seulement si, pour tout t, φX (t) = φY (t).
Il est intéressant de remarquer que la fonction caractéristique φX (t) est liée à la fonction
densité f (x) par une transformation de Fourier :
+∞
1
ˆ
f (x) = e−itx × φX (t) dt
2π −∞

Ce qui montre que la connaissance de fonction caractéristique renseigne sur la fonction den-
sité de probabilité et réciproquement. De plus, la fonction caractéristique existe toujours,
quelle que soit f (x), alors que ce n’est pas forcément le cas de la fonction génératrice.

6.7 Exercices
1. Distribution jointe : La densité de probabilité jointe de deux variables aléatoires
continues X et Y est donnée comme :

a × x × y si x ∈ [0, 2] et y ∈ [0, 4]
f (x, y) =
0 ailleurs
(a) Déterminer la valeur de a.
(b) Calculer la probabilité P (1 < X < 2 , 0 < Y < 1).
(c) Calculer la probabilité P (X ≥ 1, Y ≤ 2).
Solution
(a) On normalise la fonction f de manière à avoir une densité de probabilité :

2 4  2  4
x2 y2
¨ ˆ ˆ
f (x, y) dx dy = a x dx × y dy = a × =1
0 0 2 0 2 0

Ce qui donne finalement la valeur

1
a=
16
(b) On calcule la probabilité
2 1
1 3
ˆ ˆ
P (1 < X < 2 , 0 < Y < 1) = x dx × y dy =
16 1 0 64
6.7. EXERCICES 159

(c) On calcule la probabilité


2 2
1 3
ˆ ˆ
P (X ≥ 1 , Y ≤ 2) = x dx × y dy =
16 1 0 16

2. Convolution : Soient deux variables aléatoires continues X et Y , indépendantes,


dont les densités de probabilités respectives sont :

exp(−x) si x ≥ 0
fX (x) =
0 sinon

et 
3 × exp(−3y) si y ≥ 0
fY (y) =
0 sinon
Déterminer la densité de probabilité de la variable aléatoire somme Z = X + Y .
Vérifier qu’il s’agit bien d’une densité de probabilité.
Solution
On sait que, puisque les deux variables X et Y sont indépendantes, la densité de
probabilité de Z = X + Y s’écrit comme un produit de convolution :
ˆ +∞
g(z) = fX (x) × fY (z − x) dx = (fX ∗ fY )(z)
−∞

Remarquons que dans l’intégrale précédente fX (x) s’annule si x < 0 et fY (z − x)


s’annule si x > z, soit encore
ˆ z
g(z) = exp(−x) × 3 × exp(−3(z − x)) dx
0

Ce qui donne encore


ˆ z ˆ z
g(z) = 3 × exp(2x − 3z) dx = 3 × e−3z × e2x dx
0 0

Ce qui donne la fonction :


3 3
g(z) = e−3z (e2z − 1) = (e−z − e−3z )
2 2
Il est facile de vérifier que la fonction g (voir aussi la figure 6.1) est bien une densité
de probabilité, avec l’expression
 3
(e−z − e−3z ) si z ≥ 0
g(z) = 2
0 sinon

En effet, on peut vérifier que :


— g est positive (ou nulle) pour tout z.
´ +∞
— g est normalisée à 1 : −∞ g(z) dz = 1.
160 CHAPITRE 6. MOMENTS ET FONCTIONS CARACTÉRISTIQUES

Figure 6.1 – Représentation de la fonction de convolution g = fX ∗ fY .


3. Moments d’ordre 2 : Démontrer la relation sur les moments d’ordre 2, m2 =
m2 + σ 2 .
Solution
On part de la définition du moment d’ordre deux, qui représente l’écart-type au carré :
ˆ +∞
m2 = (x − m)2 × f (x) dx = σ 2
−∞

Il reste à développer l’intégrale :


ˆ +∞ ˆ +∞ ˆ +∞
σ2 = x2 × f (x) dx + m2 f (x) dx − 2m xf (x) dx
−∞ −∞ −∞

Soit encore ˆ +∞

σ 2 = m2 + m2 − 2m xf (x) dx
−∞
Le dernier terme de droite représente la valeur m, ce qui donne enfin
 
σ 2 = m2 + m2 − 2m2 = m2 − m2

4. Moments d’ordre 3 : Trouver la relation entre les moments d’ordre 3, m3 et m3 .
Solution
On part de la définition du moment d’ordre trois :
ˆ +∞
m3 = (x − m)3 × f (x) dx
−∞

Il reste à développer l’intégrale :


ˆ +∞
m3 = (x3 − 3x2 m + 3xm2 − m3 ) × f (x) dx
−∞

Soit encore
6.7. EXERCICES 161

  
m3 = m3 − 3mm2 + 3m2 m1 − m3
Comme par définition ˆ +∞

m1 = m = xf (x) dx
−∞
On trouve finalement la relation
 
m3 = m3 − 3m × m2 + 2m3
5. Moments : On donne la distribution continue (voir aussi la figure 6.2) :

4x(9 − x2 )/81 si x ∈ [0, 3]
f (x) =
0 sinon

Figure 6.2 – Représentation de la densité de probabilité de l’exercice 5.

   
(a) Déterminer les moments par rapport à l’origine : m1 , m2 , m3 , m4 .
(b) Déterminer les moments par rapport à la moyenne : m1 , m2 , m3 .
Solution
(a) On part de la définition des moments centrés :
ˆ +∞

mp = xp × f (x) dx
−∞

avec en particulier ˆ +∞
m= x × f (x) dx
−∞
Ce qui permet d’obtenir en intégrant :
ˆ 3
 4x(9 − x2 ) 8
m1 = x× dx = = m
0 81 5

3
4x(9 − x2 )
ˆ

m2 = x2 × dx = 3
0 81
162 CHAPITRE 6. MOMENTS ET FONCTIONS CARACTÉRISTIQUES

3
4x(9 − x2 ) 216
ˆ

m3 = x3 × dx =
0 81 35
3
4x(9 − x2 ) 27
ˆ

m4 = x4 × dx =
0 81 2
(b) En utilisant les exercices précédents, on trouve que :
ˆ +∞

m1 = (x − m) × f (x) dx = m1 − m = 0
−∞

ˆ +∞

m2 = (x − m)2 × f (x) dx = σ 2 = m2 − m2
−∞
Soit encore  2
8 11
m2 = 3 − =
5 25
et pour le dernier terme
 3
  216 8 8 32
m3 = m3 − 3m × m2 + 2m3 = − 32 × + 2 =−
35 5 5 875

6. Fonction caractéristique : On donne la densité de probabilité uniforme



1 si x ∈ [0, 1]
f (x) =
0 sinon

(a) Déterminer la fonction génératrice puis la fonction caractéristique de f .


  
(b) Déduire de la question précédente les moments à l’origine m1 , m2 et m3 .
Solution
(a) La définition de la fonction génératrice montre que pour une variable X suivant
la loi uniforme, pour t ≥ 0 :
ˆ 1  tx 1
e et − 1
MX (t) = E[etX ] = etx × 1 dx = =
0 t 0 t

Remarque : le cas t = 0 est obtenu par passage à la limite, on a MX (0) = 1.


La fonction caractéristique se calcule, pour t ≥ 0, comme
1  1
eitx eit − 1
ˆ
φX (t) = E[eitX ] = eitx × 1 dx = =
0 it 0 it

(b) Pour trouver les trois premiers moments à l’origine on peut faire un dévelop-
pement de Taylor de la fonction génératrice ou de la fonction caractéristique à
l’ordre 3 autour de 0 :
et − 1 1 + t + t2 /2! + t3 /3! + t4 /4! − 1 + t4 × (t)
MX (t) = E[etX ] = =
t t
6.7. EXERCICES 163

Soit encore

MX (t) = E[etX ] = 1 + t/2! + t2 /3! + t3 /4! + t3 × (t)

On trouve alors facilement les trois premiers moments centrés à l’origine :

 1  1  1
m1 = ; m2 = ; m3 =
2 3 4

7. Fonction caractéristique : On se donne la densité de probabilité uniforme



 1
si x ∈ [a, b]
f (x) = b−a
 0 sinon

(a) Déterminer la fonction génératrice puis la fonction caractéristique de f .


 
(b) Déduire de la question précédente les moments à l’origine m1 et m2 .
Solution
(a) La définition de la fonction génératrice montre que, pour une variable X suivant
la loi uniforme :
ˆ b  b
tX tx 1 etx etb − eta
MX (t) = E[e ] = e × dx = =
a b−a t(b − a) a t(b − a)

La fonction caractéristique se calcule comme

b  b
1 eitx eitb − eita
ˆ
itX itx
φX (t) = E[e ]= e × dx = =
a b−a it(b − a) a it(b − a)

(b) Pour trouver les deux premiers moments à l’origine on peut faire un dévelop-
pement de Taylor de la fonction génératrice ou de la fonction caractéristique à
l’ordre 2 autour de 0 :
etb − eta
MX (t) =
t(b − a)
soit
1 + tb + (tb)2 /2! + (tb)3 /3! − 1 − ta − (ta)2 /2! − (tb)3 /3! + t3 × (t)
MX (t) =
t(b − a)

Soit après simplification

1 1
MX (t) = E[etX ] = 1 + t(a + b) + t2 (a2 + b2 + ab) + t2 × (t)
2! 3!
On trouve alors facilement les deux premiers moments centrés à l’origine :

 a+b  a2 + b2 + ab
m1 = ; m2 =
2 3
164 CHAPITRE 6. MOMENTS ET FONCTIONS CARACTÉRISTIQUES

8. Fonction caractéristique : On se donne la densité de probabilité exponentielle,


où m > 0 est fixé : 
m × exp(−mx) si x ≥ 0
f (x) =
0 sinon
(a) Déterminer la fonction génératrice puis la fonction caractéristique de f .
  
(b) Déduire de la question précédente les moments à l’origine m1 , m2 et m3 .
Solution
(a) La définition de la fonction génératrice montre que pour une variable X suivant
la loi exponentielle :
 
m +∞
ˆ +∞
MX (t) = E[etX ] = etx × m × e−mx dx = ex(t−m) ×
0 t−m 0
1
MX (t) =
1 − t/m
En supposant que t < m.
La fonction caractéristique se calcule comme
ˆ +∞  +∞
itX itx −mx m
φX (t) = E[e ] = e ×m×e dx = ex(it−m) ×
0 it − m 0

Soit encore :
1
φX (t) =
1 − it/m
(b) Pour trouver les trois premiers moments à l’origine on peut faire un développe-
ment de Taylor de la fonction caractéristique (qui existe quel que soit t réel) à
l’ordre 3 autour de 0 :
1
φX (t) =
1 − it/m
1
soit, en utilisant le développement à l’ordre 3 de la fonction :
1−x
1
= 1 + x + x2 + x3 + x3 × (x)
1−x
On trouve alors facilement les trois premiers moments centrés à l’origine :
 1!  2!  3!
m1 = ; m2 = 2 ; m3 = 3
m m m
9. Fonction caractéristique : On donne la densité de probabilité (x ∈ R) de la forme

f (x) = a × exp(−|x|)

(a) Déterminer la valeur de a pour que f soit bien une densité de probabilité.
(b) Déterminer la fonction caractéristique de f .
   
(c) Déduire de la question précédente les moments à l’origine m1 , m2 , m3 et m4 .
6.7. EXERCICES 165

Solution
(a) Pour que f soit une densité de probabilité il faut que l’intégrale de f soit nor-
malisée : ˆ +∞ ˆ +∞
f (x) dx = a × exp(−|x|) dx = 1
−∞ −∞
Ce qui donne en séparant en deux l’intégrale précédente par la relation de
Chasles : ˆ 0 ˆ +∞
a× exp(x) dx + a × exp(−x) dx = 1
−∞ 0
Un calcul élémentaire donne alors la valeur de a :

1
a=
2
(b) La fonction caractéristique se calcule comme
1 +∞ itx
ˆ
φX (t) = E[eitX ] = e × e−|x| dx
2 −∞
On sépare l’intégrale en deux comme dans la question précédente :
ˆ 0 +∞ 
1
ˆ
φX (t) = ex(it+1) dx + ex(it−1) dx
2 −∞ 0
Ce qui donne :
 0  +∞
1 ex(it+1) 1 ex(it−1)
φX (t) = +
2 it + 1 2 it − 1
−∞ 0
Ce qui donne, en utilisant les limites connues :
 
1 1 1
φX (t) = −
2 it + 1 it − 1
On trouve finalement

1
φX (t) =
1 + t2
(c) Pour trouver les quatre premiers moments à l’origine on peut faire un dévelop-
pement de Taylor de la fonction caractéristique à l’ordre 4 autour de 0 :
1 2 3 4
  t  t  t
φX (t) = 2
= 1 + im1 t + i2 m2 + i3 m3 + i4 m4 + t4 (t)
1+t 2! 3! 4!
1
soit, en utilisant le développement à l’ordre 4 de la fonction :
1 + x2
1
= 1 − x2 + x4 + x4 × (x)
1 + x2
On trouve alors facilement les quatre premiers moments centrés à l’origine :
   
m1 = 0 ; m2 = 2! ; m3 = 0 ; m4 = 4!
166 CHAPITRE 6. MOMENTS ET FONCTIONS CARACTÉRISTIQUES

10. Un changement de variable aléatoire


(a) On considère une densité de probabilité f (x) associée à la variable aléatoire X,
et on se donne la nouvelle variable aléatoire Y = H(X) à laquelle on associe la
densité de probabilité g(y). On suppose que la fonction H est bijective.
Montrer que  
 dx 
g(y) = f (x) ×  
dy
On pourra utiliser la probabilité infinitésimale dP = f (x)dx.
(b) On considère la densité de probabilité d’une variable aléatoire X :

x2 /81 si −3 ≤ x ≤ 6
f (x) =
0 sinon
12 − X
On définit la nouvelle variable aléatoire continue Y = . Déterminer
3
l’expression de sa densité de probabilité g(y). Vérifier la normalisation de cette
densité.
(c) Reprendre le problème de la question précédente, avec la même densité de pro-
babilité f (x), si on définit la nouvelle variable aléatoire comme Y = X 2 .
Indication : il peut être utile de partir de la fonction de répartition P (Y ≤ y)
pour ensuite retrouver la densité g(y) par dérivation.
Vérifier la normalisation de la densité obtenue.
Solution
(a) Que l’on prenne la variable X ou la variable Y , on a forcément l’égalité (infini-
tésimale) :
dP = f (x) dx = g(y) dy
Ce qui donne, puisque les densités sont positives :

g(y) |dy| = f (x) |dx|

Soit enfin  
 dx 
g(y) = f (x) ×  
dy
Remarquons que la fonction H doit être bijective, sinon on pourrait avoir plu-
sieurs valeurs y pour un x donné, ou le contraire.
(b) Le changement de variable proposé correspond à

x = 12 − 3y
dx
Il est clair que la relation entre x et y est bijective. La dérivée est : = −3.
dy
On obtient dont la densité de probabilité :

 (12 − 3y)2
g(y) = si 2 ≤ y ≤ 5
 0 27 sinon
6.7. EXERCICES 167

On vérifie la normalisation en calculant l’intégrale :


+∞ 5  5
(12 − 3y)2 (12 − 3y)3
ˆ ˆ
g(y)dy = dy = − =1
−∞ 2 27 243 2


(c) Comme on a le changement de variable Y = X 2 , cela renvoie à x = ± y. Pour
une valeur y, il y a deux valeurs de x, comme on le voit aussi sur la figure 6.3.
On ne peut donc pas utiliser le résultat de la première question (valable pour
une bijection), il va falloir faire autrement.
On va séparer le problème en deux parties, sur l’intervalle (en y) [0, 9] et sur
l’intervalle [9, 36], en travaillant d’abord sur la fonction de répartition P (Y ≤ y).
Sur ce premier intervalle y ∈ [0, 9], on a :
√ √
P (Y ≤ y) = P (X 2 ≤ y) = P (− y ≤ X ≤ + y)

Soit finalement :

ˆ + y
P (Y ≤ y) = √
f (x) dx
− y

Sur le second intervalle y ∈ [9, 36], on a cette fois :



P (Y ≤ y) = P (+3 ≤ X ≤ + y)

Soit encore :

ˆ + y
P (Y ≤ y) = f (x) dx
+3

Dans un cas comme dans l’autre, on peut trouver la densité de probabilité en


dérivant par rapport y la fonction de répartition.
Dans le cas 0 ≤ y ≤ 9, on a donc

d + y
d √ √ 
ˆ
g(y) = √
f (x) dx = F ( y) − F (− y)
dy − y dy

En notant F une primitive de f .


Ce qui donne par dérivation :
d √ d √ 1 √ √
g(y) = F ( y) − F (− y) = √ [f ( y) + f (− y)]
dy dy 2 y
168 CHAPITRE 6. MOMENTS ET FONCTIONS CARACTÉRISTIQUES

Figure 6.3 – Représentation du changement de variable aléatoire Y = X 2 . La densité de


probabilité f (x) est non nulle sur l’intervalle [-3, 6]. On distingue deux zones sur l’axe des
y : l’intervalle [0, 9] et l’intervalle [9, 36].

Dans le cas 9 ≤ y ≤ 36, on a donc



+ y
d d √
ˆ
g(y) = f (x) dx = [F ( y) − F (3)]
dy 3 dy

En notant F une primitive de f .


Ce qui donne par dérivation par rapport à y :
d √ 1 √
g(y) = F ( y) − 0 = √ f ( y)
dy 2 y

Il reste alors à utiliser l’expression de f (x) donnée dans la question précédente,


ce qui donne, après quelques calculs simples, l’expression de la densité g(y)
recherchée :  √
 y/81 si 0 ≤ y ≤ 9

g(y) = y/162 si 9 ≤ y ≤ 36

0 sinon
On vérifie la normalisation en intégrant :
ˆ +∞ ˆ 9√ ˆ 36 √
y y
g(y) dy = dy + dy = 1
−∞ 0 81 9 162

11. Changement de variable


On donne la densité de probabilité f de la variable aléatoire X :

2 × exp(−2x) si x ≥ 0
f (x) =
0 sinon

(a) Déterminer la densité de probabilité g(y) de la variable aléatoire Y = X 3 .


6.7. EXERCICES 169

(b) Vérifier qu’il s’agit bien d’une densité de probabilité.


Solution
(a) La fonction y = x3 est bijective, on peut donc appliquer directement la formule
 
 dx 
g(y) = f (x) ×  
dy

pour déterminer la densité de probabilité g(y) associée à la variable aléatoire


dx 1
Y = X 3 . On obtient, pour x > 0, et en remarquant que = 2 :
dy 3x

2 exp(−2y 1/3 )
g(y) = ×
3 y 2/3

Ce qui donne la densité de probabilité g de la variable Y = X 3 :



 2 exp(−2y 1/3 )
× si y > 0
g(y) = 3 y 2/3

0 sinon

(b) La figure 6.4 montre les fonctions f et g. On remarque que la limite en 0 de


la densité de g semble diverger, mais un calcul (logiciel) permet de vérifier que
cette densité reste normalisée :
ˆ +∞
2 exp(−2y 1/3 )
× dy = 1
0 3 y 2/3

Figure 6.4 – Représentation des densités de probabilité g(y) et f (x). On remarque que g
diverge en 0, mais l’intégrale reste normalisée à 1.
Chapitre 7

Méthode de Monte-Carlo et calcul


intégral

On se donne une fonction f continue sur un intervalle I = [a, b], et on cherche à approcher
´b
numériquement le nombre a f (x) dx.
On commence par présenter les méthodes classiques d’intégration par les rectangles et
les trapèzes. La première consiste à utiliser des sommes de surfaces rectangulaires, ce qui re-
vient à travailler avec des polynômes de degré 0, la seconde avec des surfaces trapézoïdales,
correspondant à des polynômes de degré 1.
Nous présenterons ensuite la méthode de Monte-Carlo, méthode probabiliste qui permet
de calculer des intégrales selon un processus différent, en utilisant un générateur de nombres
aléatoires qui peut être uniforme ou non. Pour cela, nous aurons besoin de la librairie python
random qui permet de générer les données selon de multiples lois de probabilité.

7.1 Intégration numérique classique


7.1.1 La méthode des rectangles
On divise l’intervalle I d’intégration en N sous-intervalles de même longueur, tels que
les points successifs xi des subdivisions soient :

x0 = a
b−a
xi = a + i × = a + i × pas
N
xN = b

L’indice i prend toutes les valeurs entières entre 0 et N et on a défini le pas comme

b−a
pas =
N
Remarquons que pour N subdivisions il y a N + 1 points.

171
172 CHAPITRE 7. MÉTHODE DE MONTE-CARLO ET CALCUL INTÉGRAL

On définit ensuite la somme partielle composée de N termes :


N
 −1 N
 −1
SN −1 = f (xi ) × pas = f (a + i × pas) × pas
i=0 i=0

Dans le cas de cette première somme, si on suppose que la fonction f est strictement
croissante, on remarque que les N rectangles seront toujours au dessous de la courbe, ce
que signifie que la valeur de SN −1 sera inférieure ou égale à la valeur exacte de l’intégrale
´b
a f (x) × dx. On peut se référer à la figure 7.1.
On aurait, bien sûr, un résultat opposé dans le cas d’une fonction strictement décrois-
sante.
On conçoit que si N est très grand, la somme SN −1 va approcher la valeur de l’intégrale
´b
recherchée. On dit qu’on approxime a f (x) dx par la somme des N surfaces rectangulaires
SN −1 .
Cette première façon de faire sera baptisée dans la suite méthode 1.

Figure 7.1 – Principe de la méthode des rectangles. On a représenté N = 5 points, ce qui


correspond à 4 rectangles, tous au-dessus ou tous au-dessous de la courbe.
´ 10 Pour la fonction
croissante choisie, f (x) = ln(x), on a la double inégalité : SN −1 < 1 ln(x) dx < SN .

On peut imaginer la méthode 2 qui consiste à définir la somme partielle, composée


de N termes :
N
 N

SN = f (xi ) × pas = f (a + i × pas) × pas
i=1 i=1
Dans ce cas, avec une fonction strictement croissante,les N rectangles seront toujours au
dessus de´la courbe, ce que signifie que la valeur de SN sera supérieure ou égale à la valeur
b
exacte de a f (x) dx.
7.1. INTÉGRATION NUMÉRIQUE CLASSIQUE 173

En résumé, pour une fonction f croissante :


ˆ b
SN −1 < f (x) dx < SN
a
C’est ce que montre aussi la figure 7.1 ´ 10
On donne ci dessous le code en langage python permettant de calculer 1 ln(x) × dx.
La méthode 1 (on part de x0 et on va jusqu’à xN −1 ) va sous-estimer la valeur de l’intégrale.
La méthode 2 (on part de x1 et on va jusqu’à xN ) va surestimer la valeur de l’intégrale.
Enfin on calcule plus précisément l’intégrale en faisant la moyenne des 2 méthodes des
rectangles.
Dans le code ci-dessous on effectue le calcul avec 15 points, il en faut évidemment
plus pour obtenir une valeur approchée raisonnable de l’intégrale. La figure 7.2 montre la
répartition des rectangles dans le cas à 15 points.
1 #importation des librairies
2 import numpy as np
3 import matplotlib.pyplot as plt
4 #conditions initiales
5 xmin = 1
6 xmax = 10
7 nbpoints = 15
8 nbintervalles= nbpoints -1 # nombre d’intervalles
9 integrale = 0
10 integrale1=0
11 x = np.linspace(xmin, xmax, nbpoints)
12 y = np.log(x)
13 #calcul numerique
14 for i in range(0,nbintervalles):
15 integrale = integrale + y[i]*(x[i+1]-x[i])
16 integrale1 = integrale1 + y[i+1]*(x[i+1]-x[i])
17 # dessin des rectangles
18 x1_rect = [x[i], x[i], x[i+1], x[i+1], x[i]] # abscisses des sommets
19 y1_rect = [0 , y[i], y[i] , 0 , 0 ] # ordonnees des sommets
20 plt.plot(x1_rect, y1_rect,"k--")
21 x_rect = [x[i], x[i], x[i+1], x[i+1], x[i]] # abscisses des sommets
22 y_rect = [0 , y[i+1], y[i+1] , 0 , 0 ] # ordonnees des sommets
23 plt.plot(x_rect, y_rect,"r--")
24 #affichage des resultats
25 print("integrale methode 1 =", integrale)
26 print("integrale methode 2 =", integrale1)
27 print("valeur moyenne de integrale : ", (integrale+integrale1)/2)
28 #affichage graphique
29 plt.plot(x,y,"ko-")
30 plt.title("methode des rectangles ")
31 plt.ylabel(’ln(x)’)
32 plt.xlabel(’x’)
33 plt.show()
174 CHAPITRE 7. MÉTHODE DE MONTE-CARLO ET CALCUL INTÉGRAL

En prenant 20 points, on obtient la sortie suivante :


1 python3 -u "rectangle11.py"
2 integrale methode 1 = 13.463805494099379
3 integrale methode 2 = 14.554503696043927
4 valeur moyenne de integrale : 14.009154595071653
5 >Exit code: 0

En prenant 3000 points, on obtient la sortie suivante :


1 python3 -u "rectangle11.py"
2 integrale methode 1 = 14.022395225174542
3 integrale methode 2 = 14.029305283806412
4 valeur moyenne de integrale : 14.025850254490477
5 >Exit code: 0

Figure 7.2 – Principe de la méthode des rectangles. On a représenté 15 points, ce qui


correspond à 14 rectangles, tous au-dessus ou tous au-dessous de la courbe strictement
croissante.

L’intégrale vaut en réalité :


ˆ 10
ln(x) dx = −9 + 10 × ln(10) ≈ 14.02585092
1

Nos deux mesures successives nous permettent de dresser le tableau des écarts relatifs
à la valeur exacte de l’intégrale :
7.1. INTÉGRATION NUMÉRIQUE CLASSIQUE 175

Figure 7.3 – Pourcentage relatif d’écart pour les méthodes des rectangles. Attention,
l’axe des abscisses est le logarithme de N (3,0 correspond donc à 20 points environ).

N 20 3000
écart (%) méthode 1 -4,0 -0,025
écart (%) méthode 2 +3,8 +0,025
écart (%) moyenne -0,11 ≈0

La figure 7.3 montre l’évolution des écarts à la valeur de l’intégrale en fonction du


logarithme de N (nombre de points). On constate que les méthodes 1 et 2 convergent
lentement vers la valeur attendue, tandis que la méthode moyenne donne très vite un
résultat proche de la valeur de l’intégrale.
Pour limiter le nombre de calcul (dans la boucle) on a tout intérêt à évaluer l’intégrale
par les deux méthodes et à en calculer la moyenne.

7.1.2 La méthode des trapèzes


On a vu dans le cas de la méthode des rectangles que l’on peut commencer la somme
en partant du point le plus à gauche de l’intervalle (i = 0 ) ou bien en terminant par le
point le plus à droite de l’intervalle (i = N ), ce que l’on a appelé méthode 1 et méthode 2.
Cependant, il n’y a pas de raison de choisir l’une plutôt que l’autre, pour cette raison
nous avons fait une moyenne, qui donne une assez bonne valeur finale.
La combinaison des deux méthodes rectangles revient à utiliser la méthode dite des
trapèzes, qui permet d’additionner les surfaces de trapèzes élémentaires, comme on le voit
sur la figure 7.4.
176 CHAPITRE 7. MÉTHODE DE MONTE-CARLO ET CALCUL INTÉGRAL

Figure 7.4 – Méthode des trapèzes, représentée pour N = 5 points, soit 4 intervalles.

Si on considère un élément de base de longueur dx = xi+1 − xi , la surface du trapèze


qui approche le mieux la surface (sous la courbe) entre les abscisses xi et xi+1 vaut :

f (xi ) + f (xi+1 )
dS = × dx
2
La somme approchant la valeur de l’intégrale s’écrit alors comme une somme de N
termes :

N
 −1
f (xi ) + f (xi+1 )
SN = × (xi+1 − xi )
2
i=0

Cela revient à dire que cette fois nous utilisons une somme de polynômes de degré 1
pour approcher la surface sous la courbe.
Le code python ci-dessous donne un ´ 10exemple de mise en place de la méthode des trapèzes
dans le cas du calcul de l’intégrale : 1 ln(x) dx
1 #trapezes
2 #importation des librairies
3 import numpy as np
4 import matplotlib.pyplot as plt
5 #conditions initiales
6 xmin = 1
7 xmax = 10
8 nbpoints = 5
9 nbintervalles= nbpoints -1 # nombre d’intervalles
10 integrale = 0
11 x = np.linspace(xmin, xmax, nbpoints)
12 y = np.log(x)
13 #calcul numerique
7.1. INTÉGRATION NUMÉRIQUE CLASSIQUE 177

14 for i in range(0,nbintervalles):
15 integrale = integrale + (y[i]+y[i+1])*(x[i+1]-x[i])/2
16 # dessin des trapezes
17 x1_rect = [x[i], x[i], x[i+1], x[i+1], x[i]] # abscisses des sommets
18 y1_rect = [0 , y[i], y[i+1] , 0 , 0 ] # ordonnees des sommets
19 plt.plot(x1_rect, y1_rect,"k--")
20 #affichage des resultats
21 print("integrale methode 1 =", integrale)
22 #affichage graphique
23 plt.plot(x,y,"ko-")
24 plt.title("methode des trapezes ")
25 plt.ylabel(’ln(x)’)
26 plt.xlabel(’x’)
27 plt.show()

On obtient par exemple l’exécution suivante, avec N = 5 points :

1 >python3 -u "trapeze11.py"
2 integrale methode 1 = 13.685374076495288
3 >Exit code: 0

On obtient par exemple l’exécution suivante, avec N = 100 points :

1 >python3 -u "trapeze11.py"
2 integrale methode 1 = 14.025231284320698
3 >Exit code: 0

En effectuant des essais avec des valeurs de N différentes on obtient le tableau suivant :

nombre N de trapèzes 5 10 20 50 100 200


écart à la valeur exacte (pour mille) -24,3 -5,18 -1,2 -0,18 -0,04 -0,01

On retrouve ces résultats sur la figure 7.5. Il suffit d’environ 20 trapèzes pour avoir une
précision de 1 pour 1000 dans le cas de notre intégrale.

On peut montrer que la méthode des rectangles présente une erreur d’ordre 1,
b−a
c’est-à-dire qu’elle est proportionnelle au pas . Cela signifie que si on mul-
N
tiplie par 10 le nombre de points, l’erreur à la valeur exacte est divisée par 10.
Dit encore autrement, l’erreur de calcul par la méthode des rectangles diminue
1
comme .
N
La méthode des trapèzes possède, quant à elle, une erreur d’ordre 2, c’est-à-dire
 b − a 2
qu’elle est proportionnelle au carré du pas . Cela signifie que si on
N
multiplie par 10 le nombre de points, l’erreur à la valeur exacte est divisée par
100. Dit encore autrement, l’erreur de calcul par la méthode des trapèzes diminue
1
comme 2 .
N
178 CHAPITRE 7. MÉTHODE DE MONTE-CARLO ET CALCUL INTÉGRAL

Figure 7.5 – Écart relatif, méthode des trapèzes (en pour mille). Attention l’axe des
abscisses est ln(N ).On note la rapidité de convergence de la méthode.

7.1.3 Le cas des intégrales multiples


Les méthodes vues précédemment peuvent également s’appliquer au cas des intégrales
multiples. Par exemple, on peut calculer le volume sous la surface d’une fonction à 2
dimensions f (x, y) limitée par un domaine D dans le plan xy. Dans le cas de la méthode
des rectangles, on doit alors approcher le volume recherché par une somme, semblable dans
son principe au cas des intégrales simples :

N
 −1 N
 −1 N
 −1 N
 −1
(xmax − xmin ) (ymax − ymin )
SN −1 = f (xi , yj ) × dS = f (xi , yj ) ×
N N
i=0 j=0 i=0 j=0

et

N 
 N N 
 N
(xmax − xmin ) (ymax − ymin )
SN = f (xi , yj ) × dS = f (xi , yj ) ×
N N
i=1 j=1 i=1 j=1

La figure 7.6 donne une exemple de représentation de fonction continue et intégrable


de deux variables :
f (x, y) = sin(x + y 2 )

On conçoit que les méthodes des rectangles ou des trapèzes vont nécessiter de nom-
breuses itérations, et ce d’autant plus que la dimension de l’intégrale (double, triple, qua-
druple...) augmente.
7.2. LA MÉTHODE DE MONTE-CARLO 179

Figure 7.6 – Fonction de deux variables : f (x, y) = sin(x + y 2 ), avec −5 ≤ x ≤ +5 et


−3 ≤ x ≤ +3.

La méthode des rectangles, même pour le calcul des intégrales multiples, est
d’ordre 1, tandis que la méthode des trapèzes, elle, est d’ordre 2.
Pour une intégrale double on doit utiliser une double somme, ce qui implique que
diviser le pas par un facteur 10 augmente le nombre de calculs d’un facteur 100.
De façon générale, pour une intégrale d’ordre n, diviser le pas par un facteur
10 augmente le nombre de calculs d’un facteur 10n . Les méthodes déterministes
décrites ici deviennent donc très gourmande en calcul pour les intégrales multiples
de grandes dimensions.

7.2 La méthode de Monte-Carlo


7.2.1 Première ébauche : une estimation du nombre π
La méthode de Monte-Carlo utilise les tirages au hasard pour estimer, par exemple, des
surfaces.
On lance N fléchettes au hasard dans un carré de coté 2, dans lequel est inscrit un cercle
de rayon 1. On estime alors la valeur du nombre π (par la méthode dite de Monte-Carlo)
en comptant le nombre n de fléchettes dans le cercle (supposé proportionnel à la surface
du cercle, égale à π) et en ramenant à la surface du carré (égale à 4). On peut alors estimer
π (figure7.7) :
n
π ≈4×
N
180 CHAPITRE 7. MÉTHODE DE MONTE-CARLO ET CALCUL INTÉGRAL

Figure 7.7 – Une évaluation du nombre π par la méthode de Monte-Carlo : on lance N


fléchettes au hasard dans le carré de coté 2, dans lequel est inscrit un cercle de rayon 1.
On compte le nombre n de fléchettes dans le cercle (supposé proportionnel à la surface du
n
cercle, égale à π) et on peut évaluer π ≈ 4 × , en ramenant à la surface du carré (égale
N
à 4). Dans le cas de cette figure, on a effectué 10 000 lancers aléatoires.

Il est assez aisé d’estimer l’incertitude


 (ou erreur) sur la valeur de π obtenue, en in-
troduisant une variable aléatoire r = x2 + y 2 (où x et y sont des variables aléatoires
continues distribuées selon une distribution uniforme dans [−1, 1]), telle que la fonction
aléatoire F associée soit : 
0 si r > 1
F (rn ) =
1 si r ≤ 1
La fonction F n’est différente de 0 qui si r est dans le cercle. Les probabilités associées
sont :
surface du cercle π
— p1 = =
surface du carre 4
π
— p0 = 1 − p1 = 1 −
4
On en déduit alors l’espérance < F > et l’écart-type de F noté σF :
π
— < F >= E(F ) = 0 × p0 + 1 × p1 =
4
π
— < F 2 >= 02 × p0 + 12 × p1 =
4
√ π  π
— σ F = < F 2 > − < F >2 = × 1−
4 4
On sait par ailleurs que notre estimation de π est basée sur une moyenne de la fonction
7.2. LA MÉTHODE DE MONTE-CARLO 181

aléatoire F :
N
n 1 
π/4 ≈ = F (ri ) = F
N N
i=1

et l’écart-type associé à F est de la forme :



σF 1 π  π
σF = √ = √ × 1−
N N 4 4
1
Autrement dit, l’incertitude sur la détermination de π est proportionnelle à √ .
N

7.2.2 Méthode de Monte-Carlo pour le calcul des intégrales


´b
Pour estimer la valeur d’une intégrale A = a f (x) dx par la méthode de Monte-Carlo,
on peut partir du théorème de la moyenne :

Si f est une fonction réelle, définie et continue sur [a, b], avec a < b, il existe un
réel c, avec a < c < b, tel que
b
1
ˆ
f (c) = f (x) dx
b−a a

La méthode de Monte-Carlo consiste alors à utiliser des techniques aléatoires pour


estimer la valeur des intégrales définies. On calcule l’espérance d’une variable aléatoire
X de distribution continue uniforme sur [a, b] pour estimer la valeur de l’intégrale
´b
A = a f (x) × dx.
On tire N fois selon la distribution uniforme (dans [a, b]) une valeur xp de X et on
évalue f (xp ). Cela permet d’obtenir une estimation moyenne de f (c), selon le théorème de
la moyenne :
N
1 
< f (c) >≈ f (xp )
N
p=1

L’intégrale A est alors estimée simplement :


N
b
1 
ˆ
A= f (x) dx ≈ (b − a) × f (xp ) = (b − a)× < f (c) >
a N
p=1

Ce principe est généralisable à l’estimation des intégrales multiples, ce qui est le princi-
pal intérêt de la méthode de Monte-Carlo. Prenons le cas d’une intégrale triple, à calculer
sur le domaine D : ˚
f (x, y, z) dx dy dz
D
En prenant de façon aléatoire N points wi (tridimensionnels) dans le domaine D (chaque
point wi étant en fait un vecteur à trois coordonnées xi , yi , zi ), la méthode de Monte-Carlo
donne le résultat estimé :
˚
f (x, y, z) dx dy dz ≈ V (D) × (f ± σf )
D
182 CHAPITRE 7. MÉTHODE DE MONTE-CARLO ET CALCUL INTÉGRAL

Où V (D) est le "volume" associé au domaine D dans R3 et où les autres grandeurs sont :
N
1 
f= f (wi )
N
i=1

et 
N
1  2
σf = √ ×  f 2 (wi ) − f
N i=1

On obtient donc que la méthode de Monte-Carlo engendre une erreur d’estimation


1
proportionnelle à √ , et ce quelle que soit la dimension de l’intégrale.
N
Cela montre que la méthode de Monte-Carlo est moins efficace que les méthodes
1 1
déterministes en dimension 1 (rectangle en et trapèzes en 2 ). La convergence
N N
de la méthode de Monte-Carlo est, en effet, plus lente en dimension 1 que celle
des rectangles, qui n’est pourtant déjà pas bonne.
Cependant la méthode de Monte-Carlo devient intéressante en grande dimension
n car elle s’affranchit du facteur 10n inhérent aux méthodes de type trapèzes,
rectangles et autres déterministes.
L’utilisation d’une densité uniforme pour la méthode de Monte-Carlo est parfois
invalidante, car les valeurs tirées n’avantagent aucune région, alors que l’intégrale
peut être ramassée dans une certaine zone. Pour améliorer l’échantillonnage, on
peut alors être tenté de substituer à la distribution uniforme une densité plus
proche de l’allure de la fonction à intégrer. C’est l’objet du paragraphe suivant.

7.2.3 Méthode de Monte-Carlo avec une distribution générale p(x)


´b
On veut déterminer l’intégrale I = a f (x) dx par une estimation de Monte-Carlo.
On introduit une variable aléatoire Y définie sur [a, b] avec la densité de probabilité p(x)
non nécessairement uniforme définie sur l’intervalle [a, b], mais impliquant la condition
´b
a p(x) dx = 1.
f (x)
Il nous faut encore une autre variable aléatoire X = selon la densité p(x).
p(x)
L’espérance de X est donc :
ˆ b
f (x)
E(X) = × p(x) dx = I
a p(x)

Si on tire N valeurs aléatoires indépendantes x1 , x2 , ..., xN le théorème central limite


nous indique que (cas des 3 σ) :
 
 1 N
f (xi ) V (X) 
 
P  − I < 3 ≈ 0, 997
N p(xi ) N
i=1

On a introduit dans la formule précédente la variance V (X) :


ˆ b 2
f (x)
V (X) = dx − I 2
a p(x)
7.3. EXERCICES 183

Si on tire N fois, avec N assez grand, les valeurs aléatoires notées xi (selon la distribution
p(x)), alors l’intégrale I est bien estimée par
N
1  f (xi )
I ≈ SN =
N p(xi )
i=1

Si on prend une distribution p(x) uniforme sur [a, b] on retrouve le cas du paragraphe
précédent. Il est cependant parfois utile de ne pas se contenter d’une distribution uniforme,
mais bien plutôt d’optimiser le nombre de calculs en choisissant une densité plus proche
de la fonction que l’on désire intégrer. On parle alors d’échantillonnage préférentiel (ou
importance sampling).
En reprenant la notion d’intervalle de confiance à 95 % vue dans le chapitre´b sur les
théorèmes limites, on peut aussi considérer que la valeur de l’intégrale I = a f (x) dx
a 95 % de chance d’être dans l’intervalle :
  
VN VN 
SN − 1, 96 × , SN + 1, 96 ×
N N
en introduisant la variance VN telle que
N  
1  f (xi ) 2 2
VN = − SN
N p(xi )
i=1
1
On retrouve que l’intervalle à 95 % de confiance décroît comme √ , en toute généralité,
N
même pour des intégrales multiples.

7.3 Exercices
1. Précisions comparées de la méthode des rectangles et de la méthode des
trapèzes
´ 10
On veut déterminer une valeur approchée de l’intégrale I = 1 ln(x) dx par la mé-
thode des rectangles et celle des trapèzes et comparer l’évolution de cette valeur en
fonction du pas.
Écrire le code python correspondant et comparer les courbes donnant l’intégrale en
fonction du pas pour le cas de la méthode des rectangles et en fonction du pas
au carré dans le cas de la méthode des trapèzes.
Solution
Le code python suivant calcule les valeurs de l’intégrale selon les deux méthodes, avec
5 points au départ, et en incrémentant 10 fois de 5 points supplémentaires. Les deux
représentations obtenues en figure 7.8 montrent bien que la variation de la valeur de
l’intégrale par la méthode des rectangles est proportionnelle au pas, tandis que dans
le cas de la méthode des trapèzes la dépendance est proportionnelle au pas au carré.
184 CHAPITRE 7. MÉTHODE DE MONTE-CARLO ET CALCUL INTÉGRAL

1 #trapezes− rectangles
2 #importation des librairies
3 import numpy as np
4 import matplotlib.pyplot as plt
5 #conditions initiales
6 xmin = 1
7 xmax = 10
8 valeur=-9+10*np.log(10)
9 tabpas=[]
10 tabpas2=[]
11 intT=[]
12 intR=[]
13 #calcul numerique
14 for j in range(0,10):
15 nbpoints = 5+j*5
16 x = np.linspace(xmin, xmax, nbpoints)
17 y = np.log(x)
18 nbintervalles= nbpoints -1 # nombre d’intervalles
19 integraleT = 0
20 integraleR=0
21 pas=(xmax-xmin)/nbpoints
22 for i in range(0,nbintervalles):
23 integraleT = integraleT + (y[i]+y[i+1])*(x[i+1]-x[i])/2
24 integraleR = integraleR + y[i]*(x[i+1]-x[i])
25 tabpas.append(pas)
26 tabpas2.append(pas**2)
27 intT.append(integraleT)
28 intR.append(integraleR)
29 #affichage des resultats
30 print("integrale methode T =", integraleT)
31 print("integrale methode R =", integraleR)
32 #affichage graphique
33 plt.subplot(211)
34 #plt. plot ( tabpas ,intR,"ko−")
35 plt.plot(tabpas2,intT,"ko--",label="trapezes")
36 plt.title("valeur integrale trapeze en fonction du pas carre ")
37 plt.ylabel(’valeur integrale’)
38 plt.grid()
39 plt.legend()
40 plt.subplot(212)
41 plt.plot(tabpas,intR,"ko-",label="rectangles")
42 plt.title("valeur integrale rectangle en fonction du pas")
43 plt.grid()
44 plt.legend()
45 plt.show()
7.3. EXERCICES 185

Figure 7.8 – Représentation de l’évolution de l’intégrale calculée par la méthode des


trapèzes en fonction du pas au carré (en haut), et de l’évolution de l’intégrale calculée par
la méthode des rectangles en fonction du pas (en bas). On voit la dépendance linéaire dans
les deux cas.

2. Le nombre π en Monte-Carlo
On va se servir d’une distribution uniforme pour simuler un lancer de fléchettes répété
N fois sur une cible carrée de coté 2. Le carré (de centre O) contient un cercle de
centre O et de rayon 1. Ce cercle est tangent aux 4 cotés du carré.
On suppose que chaque fléchette lancée au hasard touche un point situé à l’intérieur
du carré. Cependant, chaque fléchette peut être :
— Dans le cercle, si la distance au centre O de la fléchette est inférieure à 1,
— En dehors du cercle si la distance au centre O est supérieure ou égale à 1.
On veut utiliser la distribution uniforme pour simuler le lancer d’un nombre N fixé de
fléchettes sur la cible carrée, grâce à l’appel à la fonction random.uniform(-1.,1.),
qui tire au hasard des nombres flottants dans l’intervalle [−1, +1]. Il s’agit ensuite
de se servir du comptage des impacts dans le cercle pour estimer la valeur de π, en
comparant au nombre N total.

(a) On va d’abord tester l’uniformité de la distribution random.uniform(). Pour cela


vous allez remplir une liste de N =10 000 nombres pseudo-aléatoires issus de
cette distribution et la représenter dans un histogramme comportant 10 classes.
La distribution peut-elle être considérée comme uniforme ?
186 CHAPITRE 7. MÉTHODE DE MONTE-CARLO ET CALCUL INTÉGRAL

Ncercle
(b) Justifier le fait que, si l’entier N est très grand, le rapport 4 × tend vers
N
le nombre π (Ncercle représentant le nombre d’impacts dans le cercle).
(c) Réaliser un code en langage python qui permet d’afficher la valeur de π, sa
πapp
valeur approchée πapp , le rapport , ainsi qu’une représentation graphique
π
de l’expérience des N lancers (on prendra N = 6 000 000 par exemple).
(d) On veut tester l’idée qu’augmenter le nombre N de lancers augmente la précision
de la valeur mesurée de π. Faites des tests qui permettent de conclure.
Solution
(a) Le programme python ci-dessous permet de remplir la liste HASARD de 10 000
valeurs pseudo-aléatoires (selon la distribution uniforme de la librairie random)
comprises dans l’intervalle [-1,+1].
L’histogramme du haut de la figure 7.9 montre le rangement de ces 10 000
2
valeurs dans 10 classes de même largeur (de valeur = 0, 2). Une classe va
10
contenir le nombre de valeurs pseudo-aléatoires comprises dans son intervalle
[min, max[.
Par exemple, la première classe [−1.0, −0, 8[ contient le nombre de valeurs com-
prises dans ses bornes : 984 dans notre exemple de 10 000 tirages.
L’histogramme du bas de la figure 7.9 est un agrandissement. La répartition
semble bien uniforme, puisqu’on voit qu’aux fluctuations près, chacune des 10
classes contient environ 1000 données, pour un total d’exactement 10 000 va-
leurs. On pourrait d’ailleurs faire un test de type χ2 pour valider la conformité
de la distribution expérimentale avec la distribution théorique uniforme.
1 #calcule 10 000 donnees random.random() dans [−1,1]
2 #et mise en histo ...
3 #importation des librairies
4 import random
5 import matplotlib.pyplot as plt
6 # initialisation
7 HASARD = []
8 N=10000
9 # boucle principale et remplissage de la liste HASARD
10 for i in range(N):
11 y = random.uniform(-1.0,1.0)
12 HASARD.append(y)
13 #affichage histogramme avec 10 classes ( bins )
14 plt.figure
15 plt.subplot(211)
16 plt.hist(HASARD,bins=10,color=’red’)
17 plt.title(" random uniforme 10000 donnees - 10 classes")
18 plt.grid(True)
19 plt.subplot(212)
20 #2eme histogramme
21 plt.hist(HASARD,bins=10)
22 plt.grid(True)
23 #affichage des valeurs de chacune des 10 classes
7.3. EXERCICES 187

24 counts,bins,bars= plt.hist(HASARD, bins=10)


25 print(counts)
26 plt.show()

Figure 7.9 – Tirage de N =10 000 flottants aléatoires dans [-1,+1]

Le contenu des 10 classes de l’histogramme est, pour notre tirage spécifique :


1 [ 984. 992. 1032. 996. 1032. 1015. 974. 1004. 1008. 963.]

On constate que les fluctuations autour de 1000 sont de l’ordre de quelques


pour cent. Cela permet de penser qu’on peut effectivement utiliser ce générateur
uniforme pour lancer nos fléchettes. Remarquons aussi que comme le processus
est aléatoire, si on recommence, les valeurs auront certainement changé, mais
toujours avec un écart de quelques pour cent.
(b) Chaque lancer de fléchette nécessite de tirer au hasard 2 nombres flottants (co-
ordonnées de position sur la cible carrée) que l’on note x et y, qui appartiennent
tous les deux à l’intervalle [−1, +1].
Comme la distribution des nombres aléatoires est supposée uniforme, un très
grand nombre N de lancers va couvrir uniformément la cible.
188 CHAPITRE 7. MÉTHODE DE MONTE-CARLO ET CALCUL INTÉGRAL

Le nombre d’impacts situés dans le cercle sera proportionnel à la surface Sc


du cercle, rapportée à la surface totale S de la cible carrée. Si on note p la
probabilité qu’une fléchette touche l’intérieur du cercle, on a :

Sc
p≈
S
Le nombre Ncercle d’impacts dans le cercle, si N est le nombre total de lancers,
est donné par :

Sc π × 12 Nπ
Ncercle ≈ p × N ≈ ×N ≈ ×N ≈
S 22 4
En passant à la limite N → ∞ :

Ncercle π
lim =
N →∞ N 4
soit enfin, si N est grand :
Ncercle Ncercle
π = 4 × lim ≈4×
N →∞ N N

(c) On peut décomposer le programme de lancer de fléchettes selon le pseudo-code


suivant :
1 // Programme de lancer de fl é chettes
2 // importation des librairies
3 graphique
4 random
5 mathematiques
6 // initalisation des 4 listes ( tableaux des 4 coordonnées) et paramètre
nombre de lancers N
7 N
8 x_dedans, y_dedans
9 x_dehors, y_dehors
10 //boucle FOR sur N lancers
11 a,b : tirages de 2 nombres random selon une loi uniforme [-1,1]
12 test IF sur la distance fonction de a et b au centre du cercle
13 si la distance < 1 on remplit x_dedans, y_dedans
14 si la distance >= 1 on remplit x_dehors, y_dehors
15 //Affichage graphique
16 Afficher en clair un point dans le cercle
17 Afficher en noir un point hors du cercle
18 sauvegarder la figure
19 //Affichage des ré sultats chiffr és
7.3. EXERCICES 189

Le code python utilisé est le suivant, en fonction du pseudo-code présenté au


dessus :
1 # −∗− coding: utf−8 −∗−
2 #le nombre pi et le lancer de flechettes
3 # importation des librairies graphiques , mathematiques et random
4 import matplotlib.pyplot as plt
5 import random
6 import math
7 # initialisation des listes et des variables
8 x_dedans, y_dedans = [], []
9 x_dehors, y_dehors = [], []
10 N=10000
11 # boucle FOR pour N lancers sur la cible
12 for i in range(N):
13 a, b = random.uniform(-1.,1.), random.uniform(-1.,1.)
14 longueur_test = math.sqrt(a**2 + b**2)
15 if longueur_test < 1:
16 x_dedans.append(a)
17 y_dedans.append(b)
18 else:
19 x_dehors.append(a)
20 y_dehors.append(b)
21 #affichage graphique
22 plt.scatter(x_dedans, y_dedans,c= ’yellow’, marker = ’.’, s=10)
23 plt.scatter(x_dehors, y_dehors,c= ’black’, marker = ’.’, s=10)
24 plt.axis(’equal’)
25 plt.title(’Pi et le lancer de fléchettes’)
26 #sauvegarde de la figure obtenue au format PNG
27 plt.savefig(’PI.png’)
28 plt.show()
29 # resultats chiffr és
30 print (’valeur exp : ’,4*len(x_dedans)/float(len(x_dedans) + len(
x_dehors)))
31 print(’valeur reelle : ’, math.pi)
32 print(’comparaison : ’, 4*len(x_dedans)/float(len(x_dedans) + len(
x_dehors))/math.pi)

L’affichage est le suivant, pour le code présenté ici, avec N = 10 000 :


1 (’valeur exp : ’, 3.1508)
2 (’valeur reelle : ’, 3.141592653589793)
3 (’comparaison : ’, 1.0029307893878876)

Comme on le voit, notre série de lancers nous donne une précision d’à peine 1
chiffre après la virgule.
La figure 7.10 montre la figure obtenue avec 6 millions de lancers.
190 CHAPITRE 7. MÉTHODE DE MONTE-CARLO ET CALCUL INTÉGRAL

Figure 7.10 – La cible remplie avec N = 6 × 106 lancers

(d) En adaptant le programme et en utilisant des valeurs de N croissantes, on ob-


tient les tirages successifs :

nombre lancers N 5.103 104 2.104 3.104 6.104


valeur de π approchée 3.152 3.1376 3.1286 3.14986 3.14846
% de différence de π 0,33 -0,13 -0,41 0,26 0,22
nombre lancers N 2.105 1, 5.106 3.106 6.106
valeur de π approchée 3,1418 3,14165 3,141412 3,1418
% de différence de π 0,0066 0,0020 -0,0057 0,0066
La figure 7.11 montre la variation de la conformité de la valeur de π approchée
par rapport à la valeur exacte, donnée en % en fonction de N .
Comme il s’agit d’un tirage aléatoire, la notion de précision n’est pas adaptée :
un autre tirage, pour le même N donnerait forcément une autre valeur. Nous
préférons parler de conformité.
Les fluctuations de la courbe 7.11 montrent bien l’intérêt de la notion de confor-
mité. On constate qu’au delà de N = 100 000 lancers, on obtient 3 chiffres signi-
ficatifs corrects. La convergence de notre méthode est donc très lente. Comme
π 1
on l’a vu au début du chapitre, l’écart-type sur est proportionnel à √ .
4 N
7.3. EXERCICES 191

Figure 7.11 – Évolution de la conformité de la valeur du nombre π obtenu par Monte-


Carlo : noter l’échelle logarithmique en abscisse qui permet de mieux représenter l’ampli-
tude de variation de N .

3. Une fonction délicate 1


On donne la fonction, définie sur l’intervalle [0, 1] :
f (x) = x × (1 − x) × sin2 [400 × x × (1 − x)]
Le graphe de cette fonction est donné sur la figure 7.12. Une valeur approchée de
cette intégrale est : ˆ 1
I= f (x) dx ≈ 0.085454686
0

(a) Calculer une valeur approchée de l’intégrale de cette fonction, par la méthode
des trapèzes :
ˆ 1 ˆ 1
I= f (x) dx = x × (1 − x) × sin2 [400 × x × (1 − x)] dx
0 0

Représenter l’évolution de la valeur de I en fonction du nombre N de points


utilisés.
(b) Évaluer l’intégrale par la méthode de Monte-Carlo. Comparer les deux méthodes
en terme de nombre de calculs. On pourra faire une représentation de la valeur
estimée de I en fonction du nombre de tirages aléatoires.
(c) Déterminer, dans le cas de la méthode de Monte-Carlo, l’intervalle de confiance
à 95 % pour N = 500 en progressant de 1000 en 1000 tirages aléatoires (aller
jusqu’à 7500 tirages).
192 CHAPITRE 7. MÉTHODE DE MONTE-CARLO ET CALCUL INTÉGRAL

Figure 7.12 – Représentation sur l’intervalle [0, 1] de f (x) = x(1 − x) sin2 (400x(1 − x)).

Solution
(a) Le code python ci-dessous permet de représenter l’évolution de la valeur de
l’intégrale calculée par la méthode des trapèzes en fonction du nombre de points
N . On calcule approximativement l’intégrale en partant de 10 trapèzes et en
incrémentant de 10, jusqu’à 150 trapèzes.
La liste intT contient les valeurs successives de l’intégrale, et la liste difference
les variations en % par rapport à la valeur exacte. Le résultat se trouve sur la
figure 7.13. On constate qu’un calcul avec environ 120 trapèzes donne un résultat
à environ 1 % de la valeur exacte.
1 #trapezes− fonction complexe 1
2 #importation des librairies
3 import numpy as np
4 import matplotlib.pyplot as plt
5 #conditions initiales
6 xmin = 0
7 xmax = 1
8 valeur=0.0854546863538565069757723738124
9 points=[]
10 intT=[]
11 difference=[]
12 #calcul numerique
13 for j in range(0,15):
14 nbpoints = 10+j*10
15 x = np.linspace(xmin, xmax, nbpoints)
16 y = x*(1-x)*np.sin(400*x*(1-x))**2
17 nbintervalles= nbpoints -1 # nombre d’intervalles
18 integraleT = 0
19 pas=(xmax-xmin)/nbpoints
20 for i in range(0,nbintervalles):
21 integraleT = integraleT + (y[i]+y[i+1])*(x[i+1]-x[i])
/2
7.3. EXERCICES 193

22 points.append(nbpoints)
23 intT.append(integraleT)
24 difference.append((integraleT-valeur)/valeur*100)
25 #affichage des resultats
26 print("integrale methode T =", integraleT)
27 #affichage graphique
28 plt.subplot(211)
29 plt.plot(points,intT,"ko-",label="integrale trapezes")
30 plt.title("valeur integrale (trapezes) en fonction de N")
31 plt.grid()
32 plt.legend()
33 plt.subplot(212)
34 plt.plot(points,difference,"ko-",label=" difference trapezes")
35 plt.xlabel(" valeur de N")
36 plt.ylabel("en %")
37 plt.grid()
38 plt.legend()
39 plt.show()

Figure
´1 7.13 – Évolution de la valeur approchée de l’intégrale
0 x(1 − x) sin (400x(1 − x)) dx en fonction de N (en haut). On a représenté en bas l’évo-
2

lution ramenée à la valeur exacte en fonction de N dans le cas de la méthode des trapèzes
et donnée en %. On voit qu’environ 120 points suffisent à trouver la valeur de l’intégrale à
moins de 1 %.
194 CHAPITRE 7. MÉTHODE DE MONTE-CARLO ET CALCUL INTÉGRAL

(b) On effectue des séries d’essais cumulatifs (valeur initiale de 100 incrémentée de
400 à chaque itération) pour déterminer la valeur moyenne de f (c), pour ensuite
en déduire l’intégrale :
ˆ 1
x × (1 − x) × sin2 (400x(1 − x)) dx ≈ (1 − 0)× < f (c) >
0

On utilise ici un générateur de nombres aléatoires de distribution uniforme dans


l’intervalle [0,1]. de la forme random.uniform(xmin,xmax). Cette fonction
est appelée dans la boucle qui calcule la valeur moyenne de f (c).
On obtient la figure 7.14 qui montre en haut les variations de l’estimation de
l’intégrale et en bas l’écart entre la valeur estimée et la valeur attendue, expri-
mées en pourcentage. Il est assez clair qu’il vaut mieux utiliser la méthode des
trapèzes que la méthode de Monte-Carlo pour notre intégrale simple, puisqu’on
a, dans notre tentative aléatoire, besoin d’environ 5000 essais pour obtenir une
valeur à environ 1 %.
Le code ci-dessous permet de calculer l’intégrale par l’algorithme de Monte-
Carlo. La liste intMC contient les estimations successives de l’intégrale, et la
liste difference les variations en % par rapport à la valeur exacte.
1 #Monte−Carlo− fonction complexe 1
2 #importation des librairies
3 import numpy as np
4 import matplotlib.pyplot as plt
5 import random
6 #conditions initiales
7 xmin = 0
8 xmax = 1
9 valeur=0.0854546863538565069757723738124
10 points=[]
11 intMC=[]
12 difference=[]
13 #fonction Monte−Carlo
14 def MC(x):
15 f_c=x*(1-x)*np.sin(400*x*(1-x))**2
16 return f_c
17 #calcul numerique
18 for j in range(0,55):
19 nessais= 100+j*400
20 integraleMC= 0
21 for i in range(0,nessais):
22 c=random.uniform(xmin,xmax)
23 integraleMC= integraleMC + (xmax-xmin)*MC(c)
24 points.append(nessais)
25 intMC.append(integraleMC/nessais)
26 difference.append((integraleMC/nessais-valeur)/valeur*100)
27 #affichage des resultats
28 print("integrale methode MC =", integraleMC/nessais)
29 print(points)
30 #affichage graphique
7.3. EXERCICES 195

31 plt.subplot(211)
32 plt.plot(points,intMC,"ko-",label="integrale Monte-Carlo")
33 plt.title("methode Monte-Carlo")
34 plt.grid()
35 plt.legend()
36 plt.subplot(212)
37 plt.plot(points,difference,"ko-",label=" difference MC")
38 plt.xlabel(" nombre d essais")
39 plt.ylabel("en %")
40 plt.grid()
41 plt.legend()
42 plt.show()

Figure 7.14 – Évolution de la valeur approchée de l’intégrale en fonction du nombre


d’essais (en haut), évolution ramenée à la valeur exacte (en bas) dans le cas de la méthode
de Monte-Carlo. On voit qu’il faut beaucoup plus d’essais que dans le cas des trapèzes pour
obtenir une valeur (estimée) équivalente.

(c) On sait que pour N tirages aléatoires, avec l’estimateur SN de l’intégrale, l’in-
tervalle de confiance à 95 % est
  
VN VN 
SN − 1, 96 × , SN + 1, 96 ×
N N
L’estimation de l’intégrale est donnée par
N
1 
SN = (b − a) × f (xp )
N
p=1
196 CHAPITRE 7. MÉTHODE DE MONTE-CARLO ET CALCUL INTÉGRAL

et l’expression de la variance par


N
1 
VN = (b − a)2 × f 2 (xp ) − SN
2
N
p=1

Dans le programme ci-dessous on calcule l’estimation de l’intégrale SN pour N


variant de 1000 en 1000 (à partir de la valeur initiale 500) ainsi que la liste
VAR1 = VN /N .
L’intervalle de confiance à 95 % est donc donné par

VN √
±1, 96 × = ±1, 96 V AR1
N

1 #Monte−Carlo− calcul variance (cas uniforme)


2 #importation des librairies
3 import numpy as np
4 import matplotlib.pyplot as plt
5 import random
6 #conditions initiales
7 xmin = 0.0
8 xmax = 1.0
9 valeur=0.08545468635
10 points=[]
11 intMC=[]
12 VAR1=[]
13 difference1=[]
14 #fonctions Monte−Carlo
15 def MC(x):
16 f_c=x*(1-x)*np.sin(400*x*(1-x))**2
17 return f_c
18 def randUniform(a,b):
19 #loi uniforme sur intervalle (a,b)
20 D=random.uniform(a,b)
21 return D
22 #calcul numerique
23 for j in range(0,8):
24 nessais= 500+j*1000
25 integraleMC= 0
26 va1=0
27 for i in range(0,nessais):
28 #methode 1 : uniforme
29 c= randUniform(xmin,xmax)
30 rando1= (xmax-xmin)*MC(c)
31 integraleMC= integraleMC +rando1
32 va1=va1+rando1**2
33 #remplissage des Listes
34 points.append(nessais)
35 integraleMC=integraleMC/nessais
36 intMC.append(integraleMC)
37 difference1.append((integraleMC-valeur)/valeur*100)
7.3. EXERCICES 197

38 #calcul de variance
39 #vv1 est le carre de lecart type de la moyenne
40 vv1=va1/nessais**2 -(integraleMC**2)/nessais
41 VAR1.append(vv1)
42 #affichage des listes methode uniforme
43 print(intMC)
44 print(VAR1)
45 #affichage graphique
46 plt.subplot(211)
47 plt.plot(points,difference1,"ko-",label=" difference MC1")
48 plt.xlabel(" nombre d essais")
49 plt.ylabel("en %")
50 plt.grid()
51 plt.legend()
52 plt.subplot(212)
53 plt.plot(points,VAR1,"ko-",label=" variance")
54 plt.xlabel(" nombre d essais")
55 plt.ylabel("")
56 plt.grid()
57 plt.legend()
58 plt.show()

On obtient la figure 7.15, avec en haut, le % d’écart de l’estimation de l’intégrale


à la valeur exacte, et en bas l’évolution de la variance VAR1 = VN /N en fonction
du nombre N de tirages.

Figure 7.15 – En haut : évolution en % de l’estimation de l’intégrale en fonction du nombre


d’essais (tirages) N . En bas : décroissance de VN /N en fonction de N , où VN représente
la variance.
198 CHAPITRE 7. MÉTHODE DE MONTE-CARLO ET CALCUL INTÉGRAL

La figure 7.16 donne la variance et l’intervalle de confiance pour des valeurs de


N croissantes.
Ramenée en pourcentages, la méthode de Monte-Carlo ne parait pas très per-
formante par rapport à une méthode déterministe comme celle des trapèzes.
Malgré 7000 tirages on peine à obtenir mieux qu’un écart de 2 %.

Figure 7.16 – Tableau des valeurs de l’intégrale, de la variance, de l’intervalle de confiance


en valeur et en pourcentage ramené à la valeur de l’intégrale.

4. Une fonction délicate 2 On donne la fonction, définie sur l’intervalle [0, 10] :

f (x) = sin(x2 )

Le graphe de cette fonction est donné sur la figure 7.17. Une valeur approchée de
cette intégrale est : ˆ 10
I= sin(x2 ) dx ≈ 0.58367089992
0
On montre que l’expression exacte de cette intégrale est définie comme :
ˆ 10  
I= sin(x2 ) dx = π/2 × Fresnel(10 × 2/π)
0

où la fonction de Fresnel est l’intégrale :


ˆ x  π × t2 
Fresnel(x) = sin dt
0 2

(a) Calculer une valeur approchée de l’intégrale, par la méthode des trapèzes :
ˆ 10 ˆ 10
I= f (x) dx = sin(x2 ) dx
0 0

Déterminer le nombre de trapèzes permettant une précision d’environ 1 %.


(b) Évaluer l’intégrale par une méthode Monte-Carlo. Comparer les deux méthodes
en terme de nombre de calculs.
7.3. EXERCICES 199

Figure 7.17 – Représentation sur [0, 10] de sin(x2 ).

Solution
(a) Le code python de l’exercice précédent (cas trapèzes) a été adapté au cas de
cette nouvelle fonction et on obtient les courbes 7.18. On constate que l’inté-
grale tourmentée étudiée reste approchable numériquement par la méthode des
trapèzes, puisque 120 trapèzes donnent une valeur à 1 % environ.

Figure 7.18 – Calcul de l’intégrale sur [0, 10] de sin(x2 ) par la méthode des trapèzes.
On constate que 120 trapèzes permettent d’approcher numériquement l’intégrale avec une
assez bonne précision.La courbe du dessus montre les évolutions de la valeur approchée de
l’intégrale en fonction du nombre de trapèzes. La courbe du dessous est exprimée en % par
rapport à la valeur attendue.

(b) Le code python de l’exercice précédent (cas Monte-Carlo) a été adapté au cas
de cette nouvelle fonction et on obtient les courbes 7.19. On constate que l’in-
tégrale tourmentée étudiée est approchable numériquement par la méthode de
200 CHAPITRE 7. MÉTHODE DE MONTE-CARLO ET CALCUL INTÉGRAL

Monte-Carlo, mais cela nécessite plus de calcusl que dans le cas des trapèzes. Il
faut environ 20 000 tirages aléatoires pour estimer l’intégrale à quelques pour
cent. Pour les intégrales, même tourmentées, à une dimension la méthode des
trapèzes parait plus adaptée qu’une méthode de type Monte-Carlo, même si la
courbe continue et intégrable est délicate et semble compliquée à calculer par
les méthodes déterministes.

Figure 7.19 – Estimation de l’intégrale sur [0, 10] de sin(x2 ) par la méthode de Monte-
Carlo. La courbe du haut montre la variation de l’intégrale en fonction du nombre de
tirages aléatoires, la courbe du dessous ramène ce résultat en % par rapport à la valeur
exacte. On constate qu’il faut environ 20 000 tirages aléatoires pour obtenir une estimation
de l’intégrale.

5. Estimation d’une intégrale double


On cherche à calculer, par la méthode des rectangles (2D) et par la méthode Monte-
Carlo l’intégrale M suivante :
ˆ 4 ˆ 6
M= x2 × cos(x) × y × cos(y) dx dy
x=0 y=2

La courbe correspondante est représentée en figure 7.20. Une valeur approchée de


l’intégrale est :

M ≈ 33.5282412

(a) Calculer directement cette intégrale, en séparant les variables.


(b) Utiliser la méthode des rectangles en python pour déterminer M. Estimer le
nombre d’itérations nécessaires pour avoir une erreur inférieure à 1 %.
(c) Utiliser la méthode de Monte-Carlo en python pour estimer M. Donner le nombre
d’itérations nécessaires pour avoir une erreur inférieure à 1 %.
(d) En faisant un histogramme, comparer approximativement le nombre d’itérations
de calcul pour chacune des deux méthodes pour l’intégrale double.
7.3. EXERCICES 201

Figure 7.20 – Allure de la fonction x2 × cos(x) × y × cos(y) dans le domaine [0, 4] × [2, 6].

Solution
(a) Comme les deux variables x et y sont séparables, le calcul intégral s’effectue
sans difficulté :
ˆ 4 ˆ 6 ˆ 4 ˆ 6
M= x2 ×y×cos(x)×cos(y) dx dy = x2 ×cos(x) dx y× cos(y) dy
x=0 y=2 x=0 y=2

Après quelques intégrations par parties sans difficulté, on obtient :

M = 2(4 × cos(4) + 7 × sin(4))(−cos(2) + cos(6) − 2 × sin(2) + 6 × sin(6))

et
M ≈ 33.5282412

(b) Le code python ci-dessous permet d’approcher la valeur de l’intégrale par la


méthode des rectangles. Comme il s’agit d’une intégrale double, il y a deux
boucles for imbriquées, correspondant aux axes x et y. Chaque boucle s’effec-
tuant sur N points, il faut donc N 2 points pour couvrir le domaine d’intégration
et déterminer l’intégrale. La figure 7.21 rend compte de ces résultats.
La liste intR contient les valeurs successives de l’intégrale par la méthode des
rectangles. Le paramètre N prend la valeur initiale 20 et est incrémenté de 30
en 30, jusqu’à N = 20 + 14 × 30 = 440. Les valeurs de intR sont calculées en
faisant la moyenne des deux rectangles (en partant de i = 0 et de i = 1) ce qui
revient à utiliser la méthode des trapèzes (ou double rectangles).
Il faut environ N 2 = 100 000 calculs pour obtenir une intégrale à environ 1 %
d’écart.
202 CHAPITRE 7. MÉTHODE DE MONTE-CARLO ET CALCUL INTÉGRAL

Figure 7.21 – Intégration numérique selon la méthode des rectangles de la fonction x2 ×


y × cos(x) × cos(y). Il faut environ N 2 ≈ 100 000 calculs pour obtenir un résultat à environ
1 %.

1 #rectangles− fonction de 2 variables


2 #importation des librairies
3 import numpy as np
4 import matplotlib.pyplot as plt
5 #conditions initiales
6 xmin = 0
7 xmax = 4
8 ymin = 2
9 ymax = 6
10 valeur=33.5282412663645609491159543
11 points=[]
12 intR=[]
13 difference=[]
14 #calcul numerique
15 for j in range(0,15):
16 nbpoints = 20+j*30
17 x = np.linspace(xmin, xmax, nbpoints)
18 y = np.linspace(ymin, ymax, nbpoints)
19 z1 = x**2*np.cos(x)
20 z2 = y*np.cos(y)
21 nbintervalles= nbpoints -1 # nombre d’intervalles
22 integraleR = 0
23 integraleR1=0
24 pasx=(xmax-xmin)/nbpoints
25 pasy=(ymax-ymin)/nbpoints
26 for i in range(0,nbintervalles):
27 for j in range(0,nbintervalles):
28 integraleR = integraleR + z1[i]*z2[j]*pasx*pasy
29 integraleR1 = integraleR1 + z1[i+1]*z2[j+1]*pasx*
pasy
30 points.append(nbpoints*nbpoints)
7.3. EXERCICES 203

31 intR.append((integraleR+integraleR1)/2)
32 difference.append(((integraleR+integraleR1)/2-valeur)/valeur
*100)
33 #affichage des resultats
34 print("integrale =", (integraleR+integraleR1)/2)
35 #affichage graphique
36 plt.subplot(211)
37 plt.plot(points,intR,"ko-",label="fonction double (R)")
38 plt.title("valeur integrale (rectangles) en fonction de N")
39 plt.grid()
40 plt.legend()
41 plt.subplot(212)
42 plt.plot(points,difference,"ko-",label=" fonction 2 difference en % ")
43 plt.xlabel(" valeur de N")
44 plt.ylabel("en %")
45 plt.grid()
46 plt.legend()
47 plt.show()

(c) Le code python ci-dessous permet de remplir la liste intMC, estimation de la


double intégrale. La figure 7.22 montre les résultats obtenus en fonction de N ,
nombre de tirages aléatoires, pour la valeur et en % par rapport à la valeur
exacte. Il faut environ 25 000 tirages pour obtenir une estimation de l’ordre de
quelques pour cent.
1 #MC− fonction de 2 variables
2 #importation des librairies
3 import numpy as np
4 import matplotlib.pyplot as plt
5 import random
6 #conditions initiales
7 xmin = 0
8 xmax = 4
9 ymin = 2
10 ymax = 6
11 valeur=33.5282412663645609491159543
12 points=[]
13 intMC=[]
14 difference=[]
15 #fonction randomize
16 def MC(min,max):
17 c=random.uniform(min,max)
18 return c
19 def f(x):
20 z1 = x**2*np.cos(x)
21 return z1
22 def g(y):
23 z2 = y*np.cos(y)
24 return z2
25 #calcul numerique
26 for j in range(0,45):
27 nb = 1000+j*1000
204 CHAPITRE 7. MÉTHODE DE MONTE-CARLO ET CALCUL INTÉGRAL

28 # nbintervalles = nbpoints −1
29 integraleMC = 0
30 #pasx=(xmax−xmin)/nbpoints
31 #pasy=(ymax−ymin)/nbpoints
32 for i in range(0,nb):
33 integraleMC = integraleMC + f(MC(xmin,xmax))*g(MC(ymin,
ymax))*(xmax-xmin)*(ymax-ymin)
34 points.append(nb)
35 intMC.append(integraleMC/nb)
36 difference.append((integraleMC/nb-valeur)/valeur*100)
37 #affichage des resultats
38 print("integrale =", integraleMC/nb)
39 #affichage graphique
40 plt.subplot(211)
41 plt.plot(points,intMC,"ko-",label="fonction double MC")
42 plt.title("valeur integrale MC en fonction de N")
43 plt.grid()
44 plt.legend()
45 plt.subplot(212)
46 plt.plot(points,difference,"ko-",label=" MC difference en % ")
47 plt.xlabel(" valeur de N")
48 plt.ylabel("en %")
49 plt.grid()
50 plt.legend()
51 plt.show()

Figure 7.22 – Évaluation numérique selon la méthode Monte-Carlo d’une intégrale double.
Il faut environ 25 000 calculs pour obtenir un résultat à environ 1 %.

(d) En collectant les valeurs en % des deux programmes python de l’exercice, on


peut dresser l’histogramme 7.23. On constate que la méthode Monte-Carlo n’ap-
porte pas beaucoup par rapport à la méthode des trapèzes, même pour une
7.3. EXERCICES 205

intégrale double. Il faut en fait travailler sur des intégrales de grandes dimen-
sions (supérieures à 3) pour espérer avoir un gain qualitatif avec les techniques
Monte-Carlo. Rappelons aussi que la technique Monte-Carlo est une méthode
aléatoire, les valeurs obtenues peuvent changer notablement lors d’une nouvelle
exécution du programme.

Figure 7.23 – Comparaison Monte-Carlo - rectangles pour le cas de l’estimation d’une


intégrale double.

6. Deux approches Monte-Carlo : échantillonnage préférentiel


On désire déterminer, par une méthode de Monte-Carlo, une valeur approchée de
l’intégrale suivante
ˆ 1
1
I= x4 × (1 − x)2 dx = ≈ 0, 0095238095
0 105
(a) En utilisant une distribution uniforme sur [0, 1] étudier, grâce à un programme
python, les évolutions de l’estimation de I en fonction du nombre N (de 1000
jusqu’à 5000) de tirages (avec un incrément de 1000). On calculera à chaque fois
la variance.
(b) En utilisant une distribution triangulaire p(x) sur [0, 1] ayant pour un maximum
en 2/3 (puisque la fonction à intégrer à justement une maximum en 2/3, voir
aussi la figure 7.24), étudier, grâce à un programme python, les évolutions de
l’estimation de I en fonction du nombre N (de 1000 jusqu’à 5000, avec un
incrément de 1000) de tirages. On calculera à chaque fois la variance. Comparer
à la question précédente.
En python, la librairie numpy possède, entre autres, la densité de probabilité
triangulaire : numpy.random.triangular(min,centre, max) : où centre est
la valeur pour laquelle la distribution a un pic, et où min et max sont les va-
leurs extrémales. La figure 7.24 montre cette distribution triangulaire, avec un
maximum valant 2 en 2/3 :

3x si x ∈ [0, 2/3]
p(x) =
6(1 − x) si x ∈ [2/3, 1]
206 CHAPITRE 7. MÉTHODE DE MONTE-CARLO ET CALCUL INTÉGRAL

La distribution p(x) permet d’estimer l’intégrale par l’intermédiaire de l’estima-


teur :
N
1  f (xi )
ˆ b
f (x)
I= × p(x) dx ≈ SN =
a p(x) N
i=1
p(xi )

Remarquons que pour pouvoir estimer SN il faut calculer 1/p, il sera utile d’in-
troduire cette inversion dans le code python.

Figure 7.24 – En haut, allure de la fonction x4 (1 − x)2 dans l’intervalle [0,1]. En bas,
allure de la distribution aléatoire triangulaire avec un maximum de 2 en x = 2/3. L’échan-
tillonnage préférentiel joue sur la similitude de l’allure des deux courbes.

(c) Reprendre les résultats des deux méthodes, de N = 1000 à N = 5000 (incrément
de 1000) et déterminer l’intervalle de confiance à 95 %. Comparer.
Solution
(a) Le code python utilisé combine les deux méthodes via une distribution uniforme
et une distribution triangulaire. Le tableau 7.25 résume les résultats chiffrés
obtenus. Notons en particulier la fonction inverse dont le rôle est d’inverser la
distribution de probabilité.

Figure 7.25 – Résultats des deux méthodes de Monte-Carlo : uniforme et triangulaire. On


donne pour chaque valeur de tirage aléatoire N les valeurs de l’intégrale et de la variance.
Les avantages de la méthode par échantillonnage préférentiel apparaissent nettement sur
la valeur de la variance.
7.3. EXERCICES 207

Figure 7.26 – En haut, variation du % de différence à la valeur exacte de l’intégrale avec la


distribution uniforme. En bas, variation du % de différence à la valeur exacte de l’intégrale
avec la distribution triangulaire.

(b) Le listing complet est :


1 #Monte−Carlo− 2 approches
2 #importation des librairies
3 import numpy as np
4 import matplotlib.pyplot as plt
5 import random
6 #conditions initiales
7 xmin = 0.0
8 milieu = 2.0/3.0
9 xmax = 1.0
10 valeur=1.0/105.0
11 points=[]
12 intMC=[]
13 intMC2=[]
14 VAR1=[]
15 VAR2=[]
16 difference1=[]
17 difference2=[]
18 #fonctions Monte−Carlo
19 def MC(x):
20 f_c=x**4*(1-x)**2
21 return f_c
22
23 def randUniform(a,b):
24 #loi uniforme sur intervalle (a,b)
25 D=random.uniform(a,b)
208 CHAPITRE 7. MÉTHODE DE MONTE-CARLO ET CALCUL INTÉGRAL

26 return D
27 def randNonUniform(a,c,b):
28 #loi triangulaire de numpy sur (a,b) avec c le maximum
29 pX=np.random.triangular(a,c,b)
30 return pX
31 #inversion de la loi triangulaire
32 def inverse(x):
33 if (x < 2.0/3.0):
34 inv=3*x
35 if (x>2.0/3.0):
36 inv=6*(1-x)
37 return inv
38 #calcul numerique
39 for j in range(0,30):
40 nessais= 1000+j*1000
41 integraleMC= 0
42 integraleMC2=0
43 va2=0
44 va1=0
45 for i in range(0,nessais):
46 #methode 1 : uniforme
47 c= randUniform(xmin,xmax)
48 rando1= (xmax-xmin)*MC(c)
49 integraleMC= integraleMC +rando1
50 va1=va1+rando1**2
51 #methode 2 : triangulaire
52 cc=randNonUniform(xmin,milieu,xmax)
53 rando2=MC(cc)/inverse(cc)
54 integraleMC2=integraleMC2+rando2
55 va2=va2+rando2**2
56 #remplissage des Listes
57 points.append(nessais)
58 integraleMC=integraleMC/nessais
59 intMC.append(integraleMC)
60 integraleMC2=integraleMC2/nessais
61 intMC2.append(integraleMC2)
62 difference1.append((integraleMC-valeur)/valeur*100)
63 difference2.append((integraleMC2-valeur)/valeur*100)
64 #calcul de variance
65 vv1=va1/nessais**2 -(integraleMC**2)/nessais
66 VAR1.append(vv1)
67 vv2=va2/nessais**2 -(integraleMC2**2)/nessais
68 VAR2.append(vv2)
69 #affichage des listes methode uniforme
70 print(intMC)
71 print(VAR1)
72 #affichage des listes methode triangulaire
73 print(intMC2)
74 print(VAR2)
75 #affichage graphique
76 plt.subplot(211)
7.3. EXERCICES 209

77 plt.plot(points,difference1,"ko-",label=" difference MC1")


78 plt.xlabel(" nombre d essais")
79 plt.ylabel("en %")
80 plt.grid()
81 plt.legend()
82 plt.subplot(212)
83 plt.plot(points,difference2,"ko-",label=" difference MC2")
84 plt.xlabel(" nombre d essais")
85 plt.ylabel("en %")
86 plt.grid()
87 plt.legend()
88 plt.show()

(c) On sait que pour N donné, l’intervalle de confiance à 95 % est centré autour de
SN :  
 VN VN 
SN − 1, 96 × , SN + 1, 96 ×
N N
On calcule l’estimation de l’intégrale SN pour N variant de 1000 en 1000 (à par-
tir de la valeur initiale 1000) ainsi que les listes VAR1 et VAR2 correspondant
(selon les deux méthodes) à la quantité VN /N .
L’intervalle de confiance à 95 % est donc

VN
±1, 96 ×
N

En reprenant le tableau 7.25 on détermine pour chaque valeur de N l’intervalle


de confiance à 95 % correspondant (figure 7.27). On constate que la méthode
d’échantillonnage triangulaire donne un intervalle de confiance à 95 % environ
deux fois plus petit que la méthode uniforme.

Figure 7.27 – Résultats des deux méthodes MC : uniforme et triangulaire. On donne pour
chaque valeur de tirage aléatoire N la largeur de l’intervalle de confiance à 95 %.
Chapitre 8

Générateurs congruentiels linéaires


et hasard

8.1 Le hasard en informatique

On a besoin de l’aléatoire, au sens de la production de données ne suivant pas d’ordre


précis, aussi bien en mathématiques qu’en informatique ou en physique. On cherche depuis
l’origine des ordinateurs (dans les années 1940) à produire des suites de nombres aléatoires.
Le problème est qu’un ordinateur est un objet profondément déterministe, et ne peut a
priori générer des valeurs réellement aléatoires.
On cherche donc à obtenir des séquences de nombres qui auront les apparences du
hasard. Pour produire du hasard réellement aléatoire, il faut coupler l’ordinateur à un
système physique. En utilisant l’ordinateur et un environnement de programmation, nous
pouvons tout au plus produire des suites dites pseudo-aléatoires, dont le comportement
doit être évalué et validé. C’est l’objet de ce chapitre.
Pour donner une première idée de la méthode à envisager, on peut se donner la suite
de Fibonacci (avec les valeurs initiales 1 et 1) modulo 10 :

un+2 = un+1 + un (mod 10)

Cette suite donne la succession d’entiers (on donne ici les 70 premiers termes) :
[1, 1, 2, 3, 5, 8, 3, 1, 4, 5, 9, 4, 3, 7, 0, 7, 7, 4, 1, 5, 6, 1, 7, 8, 5, 3, 8, 1, 9, 0, 9, 9, 8, 7,
5, 2, 7, 9, 6, 5, 1, 6, 7, 3, 0, 3, 3, 6, 9, 5, 4, 9, 3, 2, 5, 7, 2, 9, 1, 0, 1, 1, 2, 3, 5, 8, 3, 1, 4, 5,
9, 4...]
La figure 8.1 montre les 130 premiers termes et la périodicité de 60.
La suite a les apparences du hasard, mais pour un temps seulement : il y a une période
(de 60 termes) qui reproduit la l’infini la liste. L’apparence du hasard n’est donc pas le
hasard.
Tous les générateurs de nombre pseudo-aléatoires sont basés sur ce principe, en parti-
culier ceux que l’on appelle GCL : les générateurs congruentiels linéaires.

211
212 CHAPITRE 8. GÉNÉRATEURS CONGRUENTIELS LINÉAIRES ET HASARD

Figure 8.1 – Suite des 130 premiers termes de la suite de Fibonacci modulo 10 : on voit
nettement la période de 60, dans une structure qui parait au départ plutôt aléatoire.

8.2 Les générateurs congruentiels linéaires


8.2.1 Principe

On construit une suite périodique (de très longue période) d’entiers Xn à l’aide d’une
procédure récurrente basée sur l’opération modulo m :

Xn+1 = a × Xn + c (mod m)

On nomme a le multiplicateur, m le modulo et c l’incrément. Bien entendu, pour


générer la suite des Xn il faut partir d’une valeur initiale X0 (la graine ou seed) qui devra
être choisie soigneusement.
Puisqu’on effectue un calcul modulo m, les valeurs possibles des entiers Xn sont com-
prises dans l’intervalle des entiers : [0, 1, 2, ....., m − 1]. Rappelons que le calcul modulo m
renvoie le reste de la division euclidienne de (a × Xn + c) par m.
Chaque valeur Xn+1 dépend de la valeur précédente Xn , ce qui implique que :
— La suite des Xn est parfaitement déterministe, et absolument pas aléatoire,
— La suite des Xn prenant ses valeurs dans [0, 1, 2, ....., m − 1], elle sera forcément
périodique, d’une période égale au plus à m.
— Si la valeur initiale (seed) est reprise deux fois de suite, on générera deux fois de
suite la même liste d’entiers Xn .
— Si la liste d’entiers obtenus possède une longueur inférieure à la période de la suite,
on aura l’impression d’avoir une liste d’entiers aléatoires (si les paramètres a, c et
m sont bien choisis).
8.2. LES GÉNÉRATEURS CONGRUENTIELS LINÉAIRES 213

8.2.2 Les critères de Knuth


On admet ici les critères établis par Donald E Knuth pour avoir un bon GCL, dont la
période est de m (période maximale).
Dans le cas où c = 0, on retient que le générateur congruentiel linéaire doit respecter
les conditions suivantes, pour avoir une période maximale :
1. Le modulo m et l’incrément c doivent être premiers entre eux.
2. Pour tout nombre premier p diviseur de m, alors a − 1 est multiple de p.
3. Si m est multiple de 4, alors a − 1 est multiple de 4.
Dans le cas où l’incrément c est nul, les critères de Knuth deviennent (conditions suffi-
santes), pour que le générateur ait une période maximale :
1. m est premier,
2. am−1 − 1 est multiple de m,
3. aj − 1 n’est pas divisible par m, pour tout j ∈ [1, 2, ..., m − 2].
On suppose que m = 2n avec n ≥ 3. On admet alors que si le reste de la division entière
de a par 8 donne 3 ou 5, alors la période du générateur GCL est de 2n−2 et tous les bits
de poids faibles sont identiques (d’où la nécessité d’un décalage).

8.2.3 Des exemples de GCL


Parmi les générateurs pseudo-aléatoires les plus courants, on trouve par exemple :

1. Le générateur appelé RANDU :

a = 65 539, c = 0, m = 231 , x0 = 1

2. Le générateur du langage TurboPascal :

a = 129, c = 907 633 385, m = 232 , x0 = 1

3. Un cas intéressant à étudier, nous l’appelons le générateur M :

a = 31 415 821, c = 1, m = 100 000 000, x0 = 0

4. Le générateur appelé standard minimal :

a = 16 807, c = 0, m = 231 − 1, x0 = 1

5. Un générateur issu de la liste donnée par D. Knuth (générateur de Marsaglia, sur


machine VAX) :
a = 69 069, c = 0, m = 232 , x0 = 1
214 CHAPITRE 8. GÉNÉRATEURS CONGRUENTIELS LINÉAIRES ET HASARD

8.3 Les tests de qualité


Les tests dits de Diehard sont une suite de 25 tests statistiques permettant de tester la
plus ou moins bonne qualité d’un générateur de nombres pseudo-aléatoires. Si vous disposez
d’un environnement LINUX vous pouvez installer le paquet dieharder et tester la réussite
ou non aux divers tests (voir par exemple la page wikipédia et la page de Robert G Brown
https://webhome.phy.duke.edu/~rgb/General/dieharder.php).
Il existe d’autres packages de tests, par exemple le test U01, on pourra consulter le
site http://simul.iro.umontreal.ca/testu01/tu01.html à ce sujet.
Dans le paragraphe qui suit, et sans être aussi exhaustif que les routines dont il a
été question plus haut, nous proposons divers tests statistiques permettant de juger du
caractère aléatoire d’une suite issue d’un GCL.

8.3.1 Le test de la moyenne


On a vu dans le chapitre consacré aux lois continues, qu’une variable aléatoire qui suit
a+b
une loi uniforme dans l’intervalle [a, b] a pour espérance E(X) = et pour variance
2
(b − a)2
V (X) = .
12
Cela revient à dire que si on dispose d’un générateur de nombres flottants pseudo-
aléatoires dans [0, 1], avec un total généré de N valeurs, les paramètres attendus de cette
distribution seront alors :
1
1. E(X) = ,
2
1
2. V (X) = ≈ 0, 08333..,
12
3. On ajoute le facteur d’auto-corrélation calculé à partir de la somme des produits des
valeurs aléatoires consécutives (que l’on note ui et ui+1 , avec 1 ≤ i ≤ N − 1) :

1  1
E(ui , ui+1 ) = ui × ui+1 =
N 4
i

On admettra ici la valeur de 1/4 pour le facteur d’auto-corrélation d’une suite de


valeurs selon une loi aléatoire uniforme.
Le premier test à faire subir au générateur doit être de contrôler les valeurs empiriques
de l’espérance, de la variance et du facteur d’auto-corrélation sur un grand nombre N de
valeurs.

8.3.2 le test du χ2
On considère que l’on dispose de N données pseudo-aléatoires flottantes dans l’inter-
valle [0, 1]. Il est assez simple de les ranger en (par exemple) 10 classes, partageant en 10
intervalles égaux l’intervalle [0, 1]. On peut alors réaliser un test du χ2 entre les données
observées Oi et les données attendues (théoriques) Ei , avec i indice entier courant de 1 à
10. La valeur du χ2 va donner une mesure de la conformité des fluctuations des données
observées par rapport à ce que l’on attend (voir aussi la figure 8.2).
8.3. LES TESTS DE QUALITÉ 215

On veut tester l’hypothèse (dite nulle, notée H0 ) que les données expérimentales (is-
sues du générateur) sont en conformité avec la loi théorique de répartition uniforme dans
l’intervalle [0, 1].
Le χ20 associé aux données se calcule comme la somme sur le nombre M de classes :
M
 (Oi − Ei )2
χ20 = ≥0
Ei
i=1

On conçoit que si le χ20 est identiquement nul, il y a accord parfait entre les données
expérimentales et théoriques, ce qui n’arrive pas dans la pratique. Pour chiffrer les choses
et décider s’il y a accord ou non, on doit :
1. Calculer le nombre de degrés de liberté d associé à notre test du χ2 :

d=M −c

où c représente le nombre de contraintes (on admet qu’ici c = 1, ce qui correspond


au fait que le nombre de données est fixé à N ).
2. Choisir une tolérance α, en général une valeur de 5 % (ou 1 %), qui correspond à
la probabilité de rejeter l’hypothèse H0 alors qu’elle est vraie. Ce que l’on visualise
aussi sur la figure 8.3, qui montre la distribution du χ2 pour d = 6 degrés de liberté.
3. Chercher dans la table 8.4 la valeur χ2 à ne pas dépasser pour d et α donnés.
4. Il reste alors à conclure : si χ20 < χ2 (et N assez grand), l’hypothèse de conformité H0
entre les données expérimentales et théoriques est à conserver, avec une probabilité
d’erreur au plus de α.

Figure 8.2 – Histogramme et χ2 : On range en 10 classes les 8000 données pseudo-aléatoires


obtenues à l’aide d’un GCL nommé RANDU (transformées en nombres flottants dans
l’intervalle [0, 1]), et on compare au remplissage des 10 classes de données théoriques (800
entrées exactement par classe, symbolisées par le trait horizontal). Le χ2 mesure l’écart
additif entre l’observé et l’attendu théorique.
216 CHAPITRE 8. GÉNÉRATEURS CONGRUENTIELS LINÉAIRES ET HASARD

Figure 8.3 – Illustration du seuil de confiance α dans le cas de la distribution du χ2 à 6


degrés de liberté. Dans ce cas, au seuil de confiance de α, la valeur du χ2 à ne pas dépasser
est de 13.

Figure 8.4 – Table du χ2


8.3. LES TESTS DE QUALITÉ 217

8.3.3 Tests spectraux


Les tests spectraux permettent de tester les générateurs pseudo-aléatoires de type GCL.
Une fois que l’on a généré suffisamment d’entiers GCL on les convertit en nombres flottants
xn dans l’intervalle [0, 1] (en divisant les entiers par le modulo m). On peut alors effectuer :
— le test 2D, en représentant les flottants consécutifs dans le plan sous forme de points
de coordonnées xn , xn+1 . Si des structures apparaissent le générateur est à rejeter.
— le test 3D, en représentant les flottants consécutifs dans l’espace sous forme de
points de coordonnées xn , xn+1 , xn+2 . Si des structures apparaissent le générateur
est à rejeter.
Les tests spectraux permettent de visualiser des régularités entre couples (ou triplets)
consécutifs, régularités qui montrent que le GCL testé est loin du comportement idéal
souhaité.
En réalité, tous les GCL possèdent des structures 2D et 3D (ils ne génèrent pas des
nombres réels au sens mathématique, mais des flottants, c’est-à-dire en réalité des fractions,
puisqu’on divise un entier par le modulo). On considère simplement que (dans le cas 3D
par exemple), si les structures planes sont très rapprochées jusqu’à être indiscernables, le
GCL passe ce test.
L’exemple choisi sur la figure 8.5 est bien entendu très mauvais à tous points de vue : le
modulo est trop faible (la période maximum est évidemment de 255, et moins en fonction
du x0 choisi), les structures répétitives sont clairement visibles.
On rencontrera dans les exercices d’autres GCL qui ne passent pas les tests spectraux,
en particulier celui nommé RANDU, utilisé pourtant par les machines IBM pendant plus
de 10 ans, dans les années 1960.

Figure 8.5 – Tests 2D et 3D pour le GCL de caractéristiques : a = 25, c = 16, m = 256


et x0 = 125. On a engendré 200 données. Les structures répétitives sont bien visibles.

8.3.4 Test de Kolmogorov-Smirnov


Dans le cas d’un générateur uniforme dans l’intervalle [0, 1], la fonction de répartition
P (X ≤ x) = F (x) est la première bissectrice F (x) = x lorsque 0 ≤ x ≤ 1.
L’idée du test de Kolmogorov-Smirnov est de comparer une fonction de répartition
empirique avec la première bissectrice, et de décider quantitativement de l’accord ou non
218 CHAPITRE 8. GÉNÉRATEURS CONGRUENTIELS LINÉAIRES ET HASARD

entre les deux fonctions. C’est un test d’hypothèse semblable au test du χ2 , dans le sens
où il permet, avec un seuil de confiance donné, d’estimer si un échantillon de nombres
flottants est assimilable à la distribution uniforme théorique. Ce test peut aussi être utilisé
pour tester la conformité à d’autres lois que la loi uniforme, ainsi que la similitude entre
deux listes empiriques. La méthode à suivre ici est la suivante :
— On génère et on trie par ordre croissant N valeurs flottantes : X1 , ..., XN .
i
— On calcule la fonction de répartition empirique Fi (x) = , pour toutes les valeurs
N
Xi ≤ x ≤ Xi+1 et on détermine la valeur maximale de d = max|Fi (x) − F (x)|
— En choisissant un seuil de confiance (en général α = 5 %), on teste l’hypothèse de
conformité entre les deux distributions à l’aide de la table 8.6 par exemple, et on
conclut (voir aussi la figure 8.7).
Il suffit de vérifier si d < dα (table), et dans ce cas l’hypothèse est acceptée.
Si d > dα (table), l’hypothèse est rejetée avec le risque α de se tromper.

Figure 8.6 – Table du test de Kolmogorov-Smirnov


8.4. UTILISER UN GÉNÉRATEUR UNIFORME POUR OBTENIR UNE AUTRE LOI 219

Figure 8.7 – Principe du test de Kolmogorov-Smirnov

8.3.5 Les générateurs réellement utilisés en informatique


Les langages python, Ruby, Excel, R, PHP, MATLAB, C++, Mathematica, Scilab et
STATA utilisent l’algorithme Mersenne Twister (datant de 1997) comme générateur de
base. Celui-ci produit des nombres flottants de précision de 53 bits. La période est de
219937 − 1. Il ne s’agit pas à proprement parler d’un GCL, l’algorithme est plus complexe,
mais le principe est le même. Le lecteur pourra par exemple consulter la page Wikipédia
consacrée à ce générateur. On peut noter que ce générateur semble passer tous les tests
diehard, mais pas tous les tests U01.
Rappelons que dans les années 1960 le générateur des machines IBM était le GCL
RANDU, qui, par exemple, ne passe pas le test spectral.
Le Mersenne Twister n’est pas considéré comme un générateur utilisable en crypto-
graphie (sensible aux analyses statistiques). Il existe des générateurs utilisables dans ce cas :
Yarrow, Fortuna ou Blum Blum Shub. Il y a de nombreuses ressources sur internet
sur ces sujets.

8.4 Utiliser un générateur uniforme pour obtenir une autre


loi
En général l’environnement de travail fournit un générateur uniforme (supposé de bonne
qualité) de nombres flottants aléatoires. Il est nécessaire d’utiliser des routines supplémen-
taires pour transformer ces données selon une loi de distribution autre que la loi uniforme.

8.4.1 Le cas des lois discrètes


On suppose que l’on dispose d’un générateur (intégré dans un logiciel ou un GCL bien
choisi) de nombres flottants pseudo-aléatoires U dans l’intervalle [0, 1].
Rappelons que pour obtenir un tel générateur à partir d’un GCL on divise les entiers
de la suite par le modulo m.
La loi de Bernoulli B(p) suivie par une variable X s’obtient facilement en faisant un
tirage de U et en considérant :
220 CHAPITRE 8. GÉNÉRATEURS CONGRUENTIELS LINÉAIRES ET HASARD


X = 1 si U ≤ p
X = 0 sinon
La loi binomiale B(n, p) suivie par une variable X s’obtient à partir de n variables
indépendantes Yi de Bernoulli de même paramètre p (comme dans le paragraphe précé-
dent) :
n
X= Yi
i=1

Ainsi la variable somme X suit la loi binomiale B(n, p).


La loi de Poisson P (m) suivie par une variable X s’obtient à partir d’une extension
de la méthode précédente au cas où X prend ses valeurs dans N. On peut aussi utiliser un
algorithme efficace comme celui-ci :
1. Tirer une valeur U du générateur uniforme dans [0, 1],
2. Initialiser les variables X à 0 et P à 1,
3. Affecter à P la valeur produit P × U ,
4. Si P > exp(−m), affecter X + 1 à la variable X et retourner à l’étape précédente,
5. Afficher la valeur de X.

8.4.2 Le cas des lois continues


Pour simuler une variable aléatoire continue X dont la fonction de répartition est notée
F (x) = u, on utilise la méthode de la fonction inverse. On suppose que F est strictement
croissante. On a
x = F −1 (u)
C’est-à-dire qu’on a :
   
F F −1 (u) = P X ≤ F −1 (u)
     
Comme F F −1 (u) = u, et P X ≤ F −1 (u) = P F (X) ≤ u on obtient que
 
u = P F (X) ≤ u

On reconnaît la fonction de répartition de la loi uniforme sur [0, 1] (première bissectrice).


Dans le cas de la loi exponentielle, on peut partir de la fonction de répartition

F (x) = 1 − exp(−λx) = u

La fonction inverse est :


1
F −1 (u) = x = − ln(1 − u)
λ
ln(1 − u)
On peut poser x = − , mais u et 1−u suivent une loi uniforme sur [0, 1], finalement
λ
on écrit
ln(U )
X=−
λ
8.5. EXERCICES 221

Dans le cas de la loi normale N (m, σ), on sait qu’il n’y a pas d’expression simple de la
fonction de répartition F (x). On admettra ici l’algorithme suivant :
1. Tirer une valeur u du générateur uniforme dans [0, 1],
2. Recommencer avec v du générateur uniforme dans [0, 1],
3. En se donnant la moyenne m et l’écart-type σ calculer

Z = m + σ × −2 × ln(u) × sin(2π × v)

4. Recommencer la procédure.
La liste des données Z suit alors une loi gaussienne N (m, σ).

8.5 Exercices
1. Comparaison entre le générateur RANDU et le générateur standard mi-
nimal
On veut utiliser les tests spectraux 2D et 3D pour les deux générateurs, et comparer
les résultats.
(a) Écrire un code python qui permet de générer 3000 données dans l’intervalle [0, 1]
à partir du GCL RANDU. Créer deux listes qui permettent de représenter des
points du plan, de coordonnées xn , xn+1 . Afficher la figure correspondant au test
2D et conclure.
(b) Écrire un code python qui permet de générer 3000 données dans l’intervalle [0, 1]
à partir du GCL RANDU. Créer trois listes qui permettent de représenter des
points dans l’espace à trois dimensions, de coordonnées xn , xn+1 , xn+2 . Afficher
la figure correspondant au test 3D et conclure.
(c) Reprendre les questions précédentes, avec le générateur standard minimal.
Solution
(a) Le code ci-dessous permet l’affichage du test spectral 2D , à partir des listes
MaListxGCL et MaListyGCL. On dispose ainsi de 3000 couples de points
représentés sur la figure 8.8. On ne voit pas de structures particulières, on peut
dire que le générateur RANDU passe le test (visuel) spectral 2D.
Remarquons que dans le code ci-dessous, la fonction GCL contient une boucle
qui effectue n calculs. Par ailleurs, dans le code principal, une autre boucle
permet de remplir les listes, avec appel à cette fonction GCL, ce qui ralentit un
peu le calcul, mais cela reste sans conséquence.
1 #calcule 3000 donnees RANDU ramenees dans [0,1]
2 #et mise en 2D test spectral
3 #importation librairies
4 import numpy as np
5 import matplotlib.pyplot as plt
6 #fonction GCL RANDU
7 def GCL(n):
8 m =2**31
9 a,c=65539,0
222 CHAPITRE 8. GÉNÉRATEURS CONGRUENTIELS LINÉAIRES ET HASARD

10 x=1
11 for i in range(n):
12 x=(a*x+c)%m
13 return x
14 #remplissage des listes
15 MaListxGCL = []
16 MaListyGCL=[]
17 for i in range(3000):
18 x=GCL(i)/float(2**31)
19 y = GCL(i+1)/float(2**31)
20 MaListxGCL.append(x)
21 MaListyGCL.append(y)
22 #aspects graphique
23 plt.figure
24 plt.plot(MaListxGCL,MaListyGCL,’r.’)
25 plt.title("generateur RANDU 2D")
26 plt.xlabel(’Xn’)
27 plt.ylabel(’Xn+1’)
28 plt.show()

Figure 8.8 – Test spectral 2D pour le générateur RANDU. Il n’y a pas de structure
particulière sur cette figure qui comporte 3000 points.

(b) Le code ci-dessous permet l’affichage du test spectral 3D, à partir des listes Ma-
ListxGCL, MaListyGCL et MaListzGCL. On dispose ainsi de 3000 triplets
donnant des points représentés sur la figure 8.9. On voit, sous le bon angle, 15
plans selon lesquels se répartissent les données. Ces structures montrent visuel-
lement que le générateur RANDU n’est pas parfaitement aléatoire, et doit donc
être écarté. On peut dire que le générateur RANDU ne passe pas le test (visuel)
spectral 3D.
1 #calcule 3000 donnees RANDU ramenees dans [0,1]
2 #et mise en 3D test spectral
3 #importation librairies
4 import numpy as np
5 from mpl_toolkits.mplot3d import Axes3D
6 import matplotlib.pyplot as plt
7 #fonction RANDU
8.5. EXERCICES 223

8 def GCL(n):
9 m =2**31
10 a,c=65539,0
11 x=1
12 for i in range(n):
13 x=(a*x+c)%m
14 return x
15 #remplissage des listes
16 MaListxGCL = []
17 MaListyGCL=[]
18 MaListzGCL=[]
19 for i in range(3000):
20 x=GCL(i)/float(2**31)
21 y = GCL(i+1)/float(2**31)
22 z = GCL(i+2)/float(2**31)
23 MaListxGCL.append(x)
24 MaListyGCL.append(y)
25 MaListzGCL.append(z)
26 #aspects graphique
27 plt.figure
28 ax = plt.axes(projection=’3d’)
29 ax.scatter3D(MaListxGCL,MaListyGCL,MaListzGCL,c=’r’,marker=’.’)
30 plt.title("generateur RANDU 3D")
31 ax.set_xlabel(’Xn’)
32 ax.set_ylabel(’Xn+1’)
33 ax.set_zlabel(’Xn+2’)
34 plt.show()

Figure 8.9 – Représentation du test spectral 3D pour le générateur RANDU selon deux
angles de vue. On a généré 3000 points. Sous le bon angle, on voit les 15 plans (dits de
Marsaglia) selon lesquels s’organisent les données, ce qui montre la structure latente des
données RANDU.

(c) Il est aisé de reprendre le code précédent avec le générateur minimal

Xn+1 = 16 807 × Xn mod 231 − 1


224 CHAPITRE 8. GÉNÉRATEURS CONGRUENTIELS LINÉAIRES ET HASARD

Nous laissons au lecteur le soin de vérifier que cette fois on ne détecte aucune
structure sous-jacente. Le générateur standard minimal passe les tests spectraux
2D et 3D.
2. Tests standards et comparaison entre deux générateurs
(a) On dispose de deux générateurs, le standard minimal :

a = 16 807, c = 0, m = 231 − 1, x0 = 1

et le GCL :

a = 125, c = 1, m = 212 , x0 = 1

On veut les comparer en effectuant les tests suivants sur un nombre N = 2 000
de flottants dans [0, 1] issus de ces générateurs :
— tests de la moyenne et de l’auto-corrélation,
— test du χ2 ,
— tests spectraux 2D et 3D.
Écrire un programme python permettant de réaliser ces tests.
(b) Présenter les résultats et comparer les deux GCL en faisant un tableau.
Solution
(a) Le code ci-dessous réalise les différents tests et affiche graphiquement les résul-
tats :
1 #tests standards − importation librairies
2 import math
3 import matplotlib.pyplot as plt
4 import statistics
5 from mpl_toolkits.mplot3d import Axes3D
6 # initialisation des constantes
7 N=2000
8 #generateur standard minimal
9 m=2**31 -1 #standard minimal
10 a,c=16807,0 #standard minimal
11 x=1 #standard minimal
12 #mauvais generateur GCL
13 m1=2**12
14 a1,c1=125,1
15 y=1
16 Nbins=10
17 # listes − initialisation
18 MaListGCL=[]
19 MaListUNIF=[]
20 MaListUNIFF=[]
21 MaListUNIFFF=[]
22 MaListGCL1=[]
23 MaListUNIF1=[]
24 MaListUNIFF1=[]
25 MaListUNIFFF1=[]
8.5. EXERCICES 225

26 autoC=0
27 autoC1=0
28 #boucle de remplissage des listes
29 for i in range(N):
30 #premier generateur
31 MaListGCL.append(x)
32 MaListUNIFF.append(x/float(m))
33 x=(a*x+c)%m
34 MaListUNIF.append(x/float(m))
35 xx=(a*x+c)%m
36 autoC=autoC+x*xx/float(m)**2
37 MaListUNIFFF.append(xx/float(m))
38 #deuxieme generateur
39 MaListGCL1.append(y)
40 MaListUNIFF1.append(y/float(m1))
41 y=(a1*y+c1)%m1
42 MaListUNIF1.append(y/float(m1))
43 yy=(a1*y+c1)%m1
44 autoC1=autoC1+y*yy/float(m1)**2
45 MaListUNIFFF1.append(yy/float(m1))
46 #affichage graphique 1
47 plt.figure()
48 plt.subplot(211)
49 plt.title(’loi uniforme continue GCL standard minimal ’)
50 plt.grid()
51 counts,bins,bars=plt.hist(MaListUNIF,bins=Nbins,facecolor=’red’)
52 print(’entrees histo gcl standard : ’,counts)
53 # difference entre observation et attendu unif
54 chi21=counts-N/Nbins
55 #tests sur la moyenne autocorrelation
56 print(’loi uniforme : ’, statistics.mean(MaListUNIF),statistics.
variance(MaListUNIF))
57 print(’facteur autocorrelation : ’,autoC/N)
58 plt.ylabel(’occurence’)
59 plt.subplot(212)
60 plt.title(’loi uniforme continue GCL ’)
61 plt.grid()
62 counts,bins,bars=plt.hist(MaListUNIF1,bins=Nbins,facecolor=’red’)
63 print(’entrees histo gcl 1: ’ , counts)
64 # difference entre observation et attendu unif
65 chi22=counts-N/Nbins
66 #tests sur la moyenne autocorrelation
67 print(’loi uniforme 2 : ’, statistics.mean(MaListUNIF1),statistics.
variance(MaListUNIF1))
68 print(’facteur autocorrelation 2 : ’,autoC1/N)
69 plt.ylabel(’occurence’)
70 #test du chi2 pour les deux histos
71 chi21=chi21**2/(N/Nbins)
72 chi22=chi22**2/(N/Nbins)
73 print(’valeur du chi2 pour GCL standard :’,sum(chi21))
74 print(’valeur du chi2 pour GCL :’,sum(chi22))
226 CHAPITRE 8. GÉNÉRATEURS CONGRUENTIELS LINÉAIRES ET HASARD

75 #affichage graphique 2
76 plt.figure()
77 plt.subplot(211)
78 plt.plot(MaListUNIF, MaListUNIFF,’k.’)
79 plt.title(’test 2D - GCL standard minimal ’)
80 plt.grid()
81 plt.ylabel(’Xn’)
82 plt.xlabel(’Xn+1’)
83 plt.subplot(212)
84 plt.plot(MaListUNIF1, MaListUNIFF1,’k.’)
85 plt.title(’test 2D - GCL ’)
86 plt.grid()
87 plt.ylabel(’Xn’)
88 plt.xlabel(’Xn+1’)
89 #affichage graphique 3
90 plt.figure()
91 ax = plt.axes(projection=’3d’)
92 ax.scatter3D(MaListUNIFF1,MaListUNIF1,MaListUNIFFF1,c=’k’,marker=’.’)
93 plt.title("test 3D")
94 ax.set_xlabel(’Xn+1’)
95 ax.set_ylabel(’Xn’)
96 ax.set_zlabel(’Xn+2’)
97 plt.grid()
98 plt.figure()
99 ax = plt.axes(projection=’3d’)
100 ax.scatter3D(MaListUNIFF,MaListUNIF,MaListUNIFFF,c=’r’,marker=’.’)
101 plt.title("test 3D standard minimal")
102 ax.set_xlabel(’Xn+1’)
103 ax.set_ylabel(’Xn’)
104 ax.set_zlabel(’Xn+2’)
105 plt.grid()
106 plt.show()

Précisons quelques paramètres de ce programme :


— On génère N = 2 000 valeurs flottantes selon les deux générateurs,
— Les histogrammes utilisés ont un nombre de N bins = 10 classes,
— Les listes MaListUNIF, MaListUNIFF et MaListUNIFFF contiennent les
données flottantes dans [0, 1] du générateur standard minimal. Dans ces listes
les données sont décalées de 1 et 2 termes, de façon à pouvoir les utiliser
pour former les figures 2D et 3D de tests : affichage des couples de flottants
Xn , Xn+1 et des triplets Xn , Xn+1 , Xn+2 . Rappelons que pour passer des
entiers générés par le GCL aux flottants [0, 1] il suffit de les diviser par le
modulo m.
— Les listes MaListUNIF1, MaListUNIFF1 et MaListUNIFFF1 contiennent les
données flottantes dans [0, 1] du second générateur.
— Les variables chi21 et chi22 sont des listes de 10 valeurs, contenant les
(Oi − Ei )2
différents . L’affichage de leurs sommes respectives (ligne 73 et
Ei
74) donnent les valeurs du χ2 pour chacun des deux GCL.
Les valeurs numériques obtenues sont les suivantes pour les deux générateurs :
8.5. EXERCICES 227

1 >python3 -u "TestsStandards.py"
2 entrees histo gcl standard : [182. 204. 206. 190. 218. 208. 210.
190. 206. 186.]
3 loi uniforme : 0.5013031880561277 0.08114584523520865
4 facteur autocorrelation : 0.25354704947292095
5 entrees histo gcl 1: [191. 200. 190. 193. 212. 207. 198. 214. 207.
188.]
6 loi uniforme 2 : 0.5039599609375 0.08155455856456824
7 facteur autocorrelation 2 : 0.2560896725654602
8 valeur du chi2 pour GCL standard : 6.48
9 valeur du chi2 pour GCL : 4.08
10 >Exit code: 0

On constate que les deux générateurs passent sans problème le test de la moyenne
en obtenant des valeurs sur les 2 000 flottants :
— moyenne de 0,50.. (attendu 1/2),
— variance de 0,081.. (attendu 1/12),
— auto-corrélation de 0,25.. (attendu de 1/4).
Par ailleurs, la figure 8.10 montre que les deux histogrammes donnent bien une
répartition uniforme, aux fluctuations près.
Pour le générateur standard minimal on obtient un χ20 = 6, 48 et on sait qu’avec
10 bins et 1 contrainte (le nombre N de données) il y a d = 10 − 1 = 9 degrés de
liberté. La figure 8.4 donne une valeur critique de χ2 = 16, 92 à ne pas dépasser
au seuil de 5 %.
Il est clair que le générateur standard minimal passe le test du χ2 .
De même, pour le second générateur on obtient un χ20 = 4, 08. Là aussi, le
générateur passe le test du χ2 .
La figure 8.10 (à droite) compare les deux générateurs selon le test spectral 2D.
Si le générateur standard ne semble pas présenter de structures particulières (en
haut), ce n’est pas le cas du second générateur (en bas).
La figure 8.11 confirme ce diagnostic : le second générateur présente une struc-
ture 3D apparaissant sous forme de plans (dits de Marsaglia). Le générateur
standard (non représenté ici), ne présente pas ces plans. On doit conclure que
le second générateur est rejeté du fait des résultats des tests spectraux.
(b) On peut conclure en dressant le tableau suivant :
Réussite du : test de la moyenne test du χ2 test spectral
Générateur standard oui oui oui
Second générateur oui oui non
228 CHAPITRE 8. GÉNÉRATEURS CONGRUENTIELS LINÉAIRES ET HASARD

Figure 8.10 – Représentation (à gauche) en 10 classes des données des deux GCL donnant
des flottants dans l’intervalle [0, 1]. On a généré 2000 données, l’uniformité entraîne que
l’on attend 200 entrées par classe. Représentation 2D (à droite) des couples de flottants. Le
GCL standard minimal ne présente pas de structure visible. Le second générateur semble
présenter une structure sous-jacente.

Figure 8.11 – Représentation 3D des triplets de flottants du deuxième GCL. Il présente


une structure sous-jacente, ce qui montre que ce n’est pas un bon GCL.
8.5. EXERCICES 229

3. Obtention d’une loi discrète de Poisson à partir d’un générateur uniforme


(a) En utilisant l’algorithme proposé dans le rappel de cours, obtenir en langage
python un tableau comportant 30 000 données réparties selon une loi de Poisson
de paramètre m = 2, 0. On utilisera le générateur préexistant random() de la
librairie random. Classer ces données dans 10 classes [0,1,2,3,4,5,6,7,8,9] et
représenter les données dans un histogramme adapté.
(b) Calculer la médiane, l’espérance et la variance des 30 000 données pseudo-
aléatoires obtenues.
Solution
(a) Le code ci-dessous crée les 30 000 données selon l’algorithme proposé et les
repartit en histogramme. On note bien l’allure d’une distribution de Poisson sur
la figure 8.12. Rappelons qu’on peut définir la graine du générateur random
par une instruction du type :

random.seed(12345)

Si on met une valeur fixée de graine, le générateur démarre au même point et


reproduit toujours la même liste. Si on ne met pas de valeur ou si on omet
l’instruction, deux exécutions donneront deux listes a priori différentes (points
de départ différents). C’est ce qu’on fait ici.
1 # utilisation generateur uniforme random()
2 #calcule 30 000 donnees selon Poisson m=2.0
3 #et mise en histo ...
4 import numpy as np
5 import random
6 import statistics as stats
7 import matplotlib.pyplot as plt
8 #parametres
9 total=30000
10 m=2.0
11 i=0
12 MaListP = []
13 #algorithme
14 while i < total:
15 X=0.0
16 P=1.0
17 U=random.random()
18 P=P*U
19 while P>np.exp(-m):
20 X=X+1
21 P=P*random.random()
22 #print(P)
23
24 i=i+1
25 MaListP.append(X)
26 #graphiques
27 plt.figure
230 CHAPITRE 8. GÉNÉRATEURS CONGRUENTIELS LINÉAIRES ET HASARD

28 plt.hist(MaListP,bins=[0,1,2,3,4,5,6,7,8,9])
29 plt.grid()
30 counts,bins,bars= plt.hist(MaListP, bins=[0,1,2,3,4,5,6,7,8,9])
31 print(counts)
32 print(sum(counts))
33 print(’mediane : ’,stats.median(MaListP))
34 print(’esperance : ’,stats.mean(MaListP))
35 print(’variance : ’,stats.variance(MaListP))
36 plt.title(" random 30000 loi de poisson m=2.0- 9 classes")
37 plt.show()

Figure 8.12 – Obtention de 30 000 données avec la fonction random de python et trans-
formation suivant une loi de Poisson de paramètre 2.0. Les données sont rangées de 0 à 9
dans l’histogramme.

(b) Le code précédent affiche aussi les valeurs :


1 [4149. 8075. 8165. 5422. 2643. 1031. 371. 111. 32.]
2 29999.0
3 mediane : 2.0
4 esperance : 1.9890333333333334
5 variance : 1.9973796448770513

La première ligne donne le remplissage de chaque bin de l’histogramme, la sui-


vante la somme des contenus des bins (1 valeur est en dehors, sur les 30 000
obtenue).
On trouve ensuite la médiane, la moyenne arithmétique et la variance et les
valeurs numériques sont bien égales à m = 2.0 (à peu de choses près) comme
attendu.
8.5. EXERCICES 231

4. Obtention d’une loi exponentielle à partir d’un GCL


On utilise le GCL standard minimal. L’objectif est de créer un code python qui
va permettre d’obtenir une liste de valeurs flottantes, suivant une loi exponentielle
(continue) de paramètre λ = 1.
On se donne la variable X qui suit la loi exponentielle (de paramètre 1) :

exp(−x) si x ≥ 0
f (x) =
0 si x < 0

(a) Retrouver l’expression de la fonction de répartition de X : z = F (x).


(b) En utilisant la méthode de l’inversion, exprimer la relation entre x et z qui
permet d’obtenir la loi exponentielle en considérant que z suit la loi uniforme
continue sur [0, 1].
(c) Écrire le code python qui permet de vérifier ce qui précède. On pourra tracer la
densité de probabilité finale.
Solution
(a) En reprenant le chapitre sur les lois continues, on sait que pour la loi exponen-
tielle de paramètre 1 :

P (X ≤ x) = F (x) = 1 − exp(−x)

(b) La méthode d’inversion permet d’écrire que :

z = F (x) = 1 − exp(−x)

C’est-à-dire que :
x = −ln(1 − z)
Comme z prend ses valeurs uniformément dans [0, 1], ce sera la même chose
pour 1 − z, ce qui entraîne la formule d’inversion :

x = −ln(z)

(c) Le code ci-dessous crée 50 000 données selon trois listes :


— la liste MaListGCL, qui correspond à des entiers produits selon le GCL
standard minimal.
— la liste MaListUNIF, qui correspond à des flottants dans l’intervalle [0,1]
selon la loi uniforme (qui dérive des données de la liste précédente).
— la liste MaListEXP, qui correspond à des flottants suivant une loi expo-
nentielle de paramètre 1 (par transformation de la liste précédente).
1 #GCLexp V2 − importation librairies
2 import math
3 import matplotlib.pyplot as plt
4 import statistics
5 # initialisation des constantes
6 N=50000
7 m=2**31 -1 #standard minimal
232 CHAPITRE 8. GÉNÉRATEURS CONGRUENTIELS LINÉAIRES ET HASARD

8 a,c=16807,0 #standard minimal


9 x=1 #standard minimal
10 # listes − initialisation
11 MaListGCL=[]
12 MaListUNIF=[]
13 MaListEXP=[]
14 #boucle de remplissage des 3 listes
15 for i in range(N):
16 x=(a*x+c)%m
17 MaListGCL.append(x)
18 MaListUNIF.append(x/float(m))
19 MaListEXP.append(-math.log(x/float(m)))
20 #affichage graphique
21 plt.figure
22 plt.subplot(211)
23 plt.title(’loi uniforme continue’)
24 plt.grid()
25 counts,bins,bars=plt.hist(MaListUNIF,bins=10,facecolor=’red’)
26 print(counts)
27 print(’loi uniforme : ’, statistics.mean(MaListUNIF),statistics.
variance(MaListUNIF))
28 plt.ylabel(’occurence’)
29 plt.subplot(212)
30 plt.title(’loi exponentielle’)
31 plt.grid()
32 counts,bins,bars=plt.hist(MaListEXP,bins=[0,1,2,3,4,5,6],facecolor=’
red’)
33 print(counts)
34 print(’loi exp: ’, statistics.mean(MaListEXP),statistics.variance(
MaListEXP))
35 plt.ylabel(’occurence’)
36 plt.show()

La figure 8.13 montre les histogrammes correspondant aux deux listes : MaLis-
tUNIF et MaListEXP.
Les sorties sont les suivantes :
1 >python3 -u "GCL-EXPO V2.py"
2 [4977. 4981. 4925. 5019. 5028. 5163. 5032. 4930. 4979. 4966.]
3 loi uniforme : 0.5002847606879401 0.08285180293729073
4 [31675. 11643. 4258. 1492. 604. 214.]
5 loi exp: 0.9982072457895196 1.0105017888947312

La deuxième ligne donne le remplissage des 10 bins de l’histogramme représen-


tant la loi uniforme : on obtient environ 5 000 entrées par bin, comme attendu.
La moyenne des données est d’environ 0,500 et la variance de 0,083.
La quatrième ligne donne le remplissage des 6 bins de l’histogramme représen-
tant la loi exponentielle : on observe un pic comme attendu. la moyenne des
données est d’environ 0,998 et la variance de 1,010 ce qui est cohérent avec les
résultats attendus pour une loi exponentielle de paramètre 1.
8.5. EXERCICES 233

Figure 8.13 – Obtention de 50 000 données avec le GCL standard minimal, et transforma-
tion en données flottantes suivant une loi continue exponentielle de paramètre 1. La figure
du haut met bien évidence le caractère uniforme (aux fluctuations près) du générateur dans
[0, 1]. La figure du bas représente l’histogramme (typique d’une loi exponentielle) associé
aux données transformées selon le processus indiqué dans l’exercice.

5. Obtention d’une loi gaussienne à partir de deux générateurs uniformes


En utilisant le générateur uniforme de la librairie random de python, on veut obtenir
par la transformation proposée dans le cours une liste de données se répartissant selon
une loi gaussienne, de moyenne m = 3, 0 et et d’écart-type σ = 0, 5.
(a) Écrire un programme python qui utilise la loi uniforme dans l’intervalle [0, 1]
et qui permet d’obtenir une liste de 4000 données se répartissant selon une loi
gaussienne N (3; 0.5).
(b) Représenter graphiquement les données des entrées gaussiennes dans un histo-
gramme de 20 bins. Représenter sur un graphique à deux dimensions les couples
de points gaussiens successifs (xn , xn+1 ) et commenter le résultat.
(c) Représenter un graphique à trois dimensions les triplets de points gaussiens
successifs (xn , xn+1 , xn+2 ) et commenter le résultat.
Solution
(a) Le code suivant permet d’obtenir une liste de 4000 entrées MaListxGCL qui
se répartissent selon la loi gaussienne N (3; 0.5). On a de plus créé deux autres
listes MaListyGCL et MaListzGCL qui contiennent 4000 données similaires.
234 CHAPITRE 8. GÉNÉRATEURS CONGRUENTIELS LINÉAIRES ET HASARD

Le générateur uniforme utilisé est celui de python, via la librairie random. Il


s’agit du générateur appelé Mersenne Twister.
1 #generation GAUSS a partir random uniforme
2 #importation des librairies
3 import numpy as np
4 import matplotlib.pyplot as plt
5 from mpl_toolkits.mplot3d import Axes3D
6 import math as mat
7 import random
8 # initialisation
9 total = 4000
10 m=3.0 #moyenne de la gaussienne
11 sig = 0.5 #ecart type de la gaussienne
12 #loi GAUSS a base de 2 random.random
13 MaListxGCL = []
14 MaListyGCL=[]
15 MaListzGCL=[]
16 for i in range(total):
17 x=m+sig*(-2.0*np.log(random.random()))**(0.5)*mat.sin(2*mat.pi*
random.random())
18 y=m+sig*(-2.0*np.log(random.random()))**(0.5)*mat.sin(2*mat.pi*
random.random())
19 z=m+sig*(-2.0*np.log(random.random()))**(0.5)*mat.sin(2*mat.pi*
random.random())
20 MaListxGCL.append(x)
21 MaListyGCL.append(y)
22 MaListzGCL.append(z)
23 #affichage
24 plt.figure()
25 plt.subplot(211)
26 plt.hist(MaListxGCL,color=’red’,bins=20)
27 plt.title(’Loi de gauss via loi uniforme random - 20 bins’)
28 plt.grid()
29 plt.subplot(212)
30 plt.plot(MaListxGCL,MaListyGCL,’k.’)
31 plt.xlim(1,5)
32 plt.ylim(1,5)
33 plt.title(’ gaussienne - en 2D’)
34 plt.grid()
35 plt.figure()
36 ax = plt.axes(projection=’3d’)
37 ax.scatter3D(MaListxGCL,MaListyGCL,MaListzGCL,c=’k’,marker=’.’)
38 plt.title("random.random() donne GAUSS 3D")
39 ax.set_xlabel(’Xn’)
40 ax.set_ylabel(’Xn+1’)
41 ax.set_zlabel(’Xn+2’)
42 plt.grid()
43 plt.show()

(b) La figure 8.14 donne (en haut) l’histogramme de 20 bins correspondant à la


liste MaListxGCL. On remarque l’allure gaussienne de l’histogramme, avec
8.5. EXERCICES 235

une moyenne centrée sur la valeur 3,0.


La figure 8.14 donne (en bas) l’allure du nuage de points
(MaListxGCL, MaListyGCL). On voit que le nuage est centré sur la valeur
3,0 avec un écart-type de l’ordre de 0,5 (les points s’éloignent de moins de ±1 du
centre en moyenne). On ne voit pas de structures sous-jacentes, ce qui implique
que les données sont aléatoires de façon satisfaisante.

Figure 8.14 – En haut : histogrammes à 20 bins contenant 4000 entrées. En bas : distri-
bution 2D (Xn , Xn+1 ) : la gaussienne est centrée sur la moyenne de 3, et l’écart-type de
0,5 est visible, car on ne s’écarte pas beaucoup de 2 écart-types sur la distribution)

(c) La figure 8.15 donne l’allure du nuage de points tridimensionnel


(MaListxGCL, MaListyGCL, MaListzGCL). On voit que le nuage est cen-
tré sur la valeur 3,0 avec un écart-type de l’ordre de 0,5 (les points s’éloignent de
moins de ±1 du centre en moyenne). On ne voit pas de structure sous-jacente,
même en faisant tourner les axes, ce qui implique que les données sont aléatoires
de façon satisfaisante.
236 CHAPITRE 8. GÉNÉRATEURS CONGRUENTIELS LINÉAIRES ET HASARD

Figure 8.15 – Distribution 3D (Xn , Xn+1 , Xn+2 ) du nuage gaussien.

6. Les chiffres de poids faibles


On veut comparer le comportement de deux GCL : le générateur M et le standard
minimal, concernant leurs derniers chiffres significatifs.
On notera GCL1 le générateur M et GCL2 le standard minimal.
(a) Écrire un code python qui génère des données selon le GCL choisi, pour un total
de 100 valeurs pseudo-aléatoires entières. Le code devra extraire des données le
dernier chiffre significatif, les deux derniers chiffres significatifs, l’avant dernier
chiffre significatif, les trois derniers chiffres significatifs.
(b) Représenter graphiquement, pour les deux GCLs, les variations du dernier chiffre
significatif, de l’avant dernier chiffre significatif, des deux derniers chiffres signi-
ficatifs, des trois derniers chiffres significatifs.
(c) Comparer les deux GCL et conclure.
Solution
(a) Le code python ci-dessous répond au problème posé. Précisons le rôle de chaque
fonction et de chaque liste :
— Les deux fonctions GCL1 et GCL2 renvoient, selon le GCL choisi, la nieme
valeur de la suite, selon le calcul modulo m. Remarquons que l’obtention de
cette valeur (unique) nécessite n calculs. La liste MaListGCL contient les
100 valeurs demandées.
— La fonction extract renvoie le dernier chiffre significatif de l’entier n (c’est-
à-dire le chiffre de poids faible). C’est la liste dernierChiffre qui contient
les 100 entiers successifs.
— La fonction extract2 renvoie les deux derniers chiffres significatifs de l’en-
tier n (c’est-à-dire les deux chiffres de poids faible). C’est la liste der-
nier2Chiffre qui contient les 100 entiers à deux chiffres successifs.
8.5. EXERCICES 237

— La fonction extractA renvoie l’avant-dernier chiffre significatif de l’entier


n. C’est la liste AdernierChiffre qui contient les 100 avant-derniers entiers
successifs.
— La fonction extract3 renvoie les trois derniers chiffres significatifs de l’entier
n. C’est la liste dernier3Chiffre qui contient les 100 entiers à trois chiffres
successifs.

1 #tests : poids faible


2 #importation librairies
3 import numpy as np
4 import math
5 import matplotlib.pyplot as plt
6 N=100
7 #choix m pour GCL1 ou GCL2
8 m2=2**31 -1 #standard minimal GCL2
9 m1=100000000 #GCL1
10 #
11 #Calcul des entiers GCL
12 def GCL1(n,m):
13 a,c=31415821,1
14 x=0
15 for i in range(n):
16 x=(a*x+c)%m
17 return x
18 def GCL2(n,m):
19 m=2**31 -1 #standard minimal
20 a,c=16807,0 #standard minimal
21 x=1 #standard minimal
22 for i in range(n):
23 x=(a*x+c)%m
24 return x
25 #determination du dernier chiffre de l entier n
26 def extract(n):
27 nn=n
28 mm=math.floor(math.log10(n))
29 for i in range(mm,0,-1):
30 nn=nn%10**i
31 #print(n)
32 #print(nn)
33 return nn
34 #determination des 2 derniers chiffres de l entier n
35 def extract2(n):
36 nn=n
37 mm=math.floor(math.log10(n))
38 for i in range(mm,1,-1):
39 nn=nn%10**i
40 #print(n)
41 #print(nn)
42 return nn
43 #determination de l avant dernier chiffre de n
44 def extractA(n):
238 CHAPITRE 8. GÉNÉRATEURS CONGRUENTIELS LINÉAIRES ET HASARD

45 nn=n
46 mm=math.floor(math.log10(n))
47 for i in range(mm,1,-1):
48 nn=nn%10**i
49 nn=math.floor((nn-nn%10)/10)
50 #print(n)
51 #print(nn)
52 return nn
53 #determination des 3 derniers chiffres de l entier n
54 def extract3(n):
55 nn=n
56 mm=math.floor(math.log10(n))
57 for i in range(mm,2,-1):
58 nn=nn%10**i
59 #print(n)
60 #print(nn)
61 return nn
62 #remplissage des listes − initialisation
63 MaListGCL=[]
64 dernierChiffre=[]
65 AdernierChiffre=[]
66 dernier2Chiffre=[]
67 dernier3Chiffre=[]
68 #boucle de creation des listes
69 for i in range(N):
70 #choix GCL1 ou GCL2 avec m1 ou m2
71 x=GCL1(i,m1)
72 #x=GCL2(i,m2)
73 #determination du dernier chiffre significatif de lentier x
74 if (x>0):
75 dernierChiffre.append(extract(x))
76 if (x>1):
77 AdernierChiffre.append(extractA(x))
78 if (x>1):
79 dernier2Chiffre.append(extract2(x))
80 if (x>2):
81 dernier3Chiffre.append(extract3(x))
82 MaListGCL.append(x)
83 #affichage certaines listes
84 print(MaListGCL)
85 print(dernierChiffre)
86 print(AdernierChiffre)
87 print(dernier2Chiffre)
88 print(dernier3Chiffre)
89 #affichage graphique
90 #figure 1
91 plt.figure
92 plt.subplot(121)
93 plt.plot(dernierChiffre,’r-’)
94 plt.plot(dernierChiffre,’ko’)
95 plt.title(’dernier chiffre de chaque entier GCL’)
8.5. EXERCICES 239

96 plt.grid()
97 plt.ylabel(’dernier chiffre’)
98 plt.subplot(122)
99 plt.plot(AdernierChiffre,’k-’)
100 plt.plot(AdernierChiffre,’ro’)
101 plt.title(’avant dernier chiffre de chaque entier GCL’)
102 plt.grid()
103 plt.ylabel(’ avant dernier chiffre’)
104 plt.show()
105 #figure 2
106 plt.figure()
107 plt.subplot(121)
108 plt.plot(dernier2Chiffre,’r-’)
109 plt.plot(dernier2Chiffre,’ko’)
110 plt.title(’deux derniers chiffres de chaque entier GCL’)
111 plt.grid()
112 plt.ylabel(’ deux derniers chiffres’)
113 plt.subplot(122)
114 plt.plot(dernier3Chiffre,’k-’)
115 plt.plot(dernier3Chiffre,’ro’)
116
117 plt.title(’trois derniers chiffres de chaque entier GCL’)
118 plt.grid()
119 plt.ylabel(’ trois derniers chiffres’)
120 plt.show()

(b) La figure 8.16 montre, dans le cas du GCL1 (générateur M) les variations du
dernier chiffre significatif (à gauche) et de l’avant-dernier chiffre (à droite). On
voit que les variations sur les 100 valeurs successives ne sont pas aléatoires.
La figure 8.17 montre, dans le cas du GCL1 (générateur M) les variations des
deux derniers chiffres significatifs (à gauche) et des trois derniers chiffres (à
droite). On voit que les variations sur les 100 valeurs successives ne sont pas
aléatoires non plus.

Figure 8.16 – Cas du générateur M : dernier et avant-dernier chiffres significatifs. On


remarque que le dernier chiffre suit une progression arithmétique de 1 à 9, ce qui est loin
du comportement aléatoire que l’on attend. L’avant dernier chiffre aussi semble varier de
façon peu aléatoire.
240 CHAPITRE 8. GÉNÉRATEURS CONGRUENTIELS LINÉAIRES ET HASARD

Figure 8.17 – Cas du générateur M : deux et trois derniers chiffres significatifs. Si les
trois derniers chiffres varient de façon plus ou moins aléatoire, ce n’est pas le cas des deux
derniers, on distingue un motif de régularité.

La figure 8.18 montre, dans le cas du GCL2 (générateur standard minimal) les
variations du dernier chiffre significatif (à gauche) et de l’avant-dernier chiffre (à
droite). Les variations sur les 100 valeurs successives semblent aléatoires, en tous
les cas on ne distingue pas de motif ordonné, comme dans le cas du générateur
M.
La figure 8.19 montre, dans le cas du GCL2 (générateur standard minimal) les
variations des deux derniers chiffres significatifs (à gauche) et des trois derniers
chiffres (à droite). Les variations sur les 100 valeurs successives semblent aléa-
toires.

Figure 8.18 – Cas du générateur standard minimal : dernier et avant-dernier chiffres


significatifs

(c) Si lecteur effectue les tests dont nous avons parlé dans ce chapitre, il se rendra
compte que les deux générateurs (M et standard minimal) les passent sans diffi-
culté. Pourtant, cette étude rapide sur les chiffres de poids faibles montre que le
générateur M ne peut pas être considéré comme aléatoire, en tous les cas sur les
derniers chiffres. Le générateur standard minimal par contre ne montre pas de
régularité particulière sur les chiffres de poids faibles. En réalité, il conviendrait,
pour rendre le générateur M un peu meilleur, de rajouter une étape de mélange
des valeurs entières obtenues grâce à ce GCL.
8.5. EXERCICES 241

Figure 8.19 – Cas du générateur standard minimal : deux et trois derniers chiffres signi-
ficatifs

7. Test de Kolmogorov-Smirnov
(a) En utilisant le générateur de nombres pseudo-aléatoires uniforme dans [0, 1]
du langage python, écrire un code qui remplit une liste, que l’on renommera
ranUNIF avec 30 valeurs.
Le code doit permettre de faire un test de Kolmogorov-Smirnov sur ces valeurs.
On peut faire le test directement, mais aussi à l’aide de la routine kstest de la
librairie scipy.
(b) Afficher des résultats chiffrés : la liste des 30 valeurs, la valeur moyenne et
l’écart-type des ces valeurs, ainsi que la valeur d = max|Fi (x) − F (x)| , plus
grande différence entre les fonctions de répartition théorique et empirique.
(c) Afficher un graphe comparant les fonctions de répartition théorique et empirique.
Conclure sur le test effectué dans cet exercice en prenant un seuil de signification
de 5 %. Il est bien évidemment possible de faire le même test avec beaucoup
plus de données.
Solution
(a) Le code ci-dessous permet de réaliser le test de Kolmogorov-Smirnov sur la liste
ranUNIF obtenue à partir de 30 données du générateur pseudo-aléatoire py-
thon. On compare les fonctions de répartition empirique et théorique au travers
de la liste gaps. La plus grande valeur de gaps est notée Dn . La grandeur Kn
est le produit de Dn par la racine carrée de n (de façon à se ramener à la table
de Kolmogorov 8.6).
1 #importation des librairies
2 from scipy.stats import uniform
3 import numpy as np
4 import random
5 from scipy import stats
6 from scipy.stats import kstest
7 import matplotlib.pyplot as plt
8 #generation de n donnees experimentales
9 n = 30
242 CHAPITRE 8. GÉNÉRATEURS CONGRUENTIELS LINÉAIRES ET HASARD

10 ranUNIF=[]
11 np.random.seed(seed=233423)
12 for i in range(n):
13 ranUNIF.append( random.random())
14 x = np.sort(ranUNIF) #tri donnees
15 print(x)
16 print(’moyenne : ’,np.mean(x))
17 print( ’ecart type : ’,np.std(x))
18 #mise en place du test
19 target = uniform(0,1)
20 cdfs = target.cdf(x) # distribution cumulative
21 ecdfs = np.arange(n+1, dtype=float)/n
22 gaps = np.column_stack([cdfs - ecdfs[:n], ecdfs[1:] - cdfs])
23 Dn = np.max(gaps)
24 Kn = np.sqrt(n) * Dn
25 print(’Dn=%f, sqrt(n)*Dn=%f’ % (Dn, Kn))
26 #calcul direct via p value de kstest
27 print(’calcul direct : ’,stats.kstest(x,’uniform’))
28 #affichage graphique
29 plt.step(np.concatenate([[0], x]), ecdfs, where=’post’,label=’ f
repartition Empirique’)
30 x3 = np.linspace(0, 1, n)
31 plt.plot(x3, x3, ’k--’,label=’f repartition uniforme’)
32 plt.ylim([0, 1])
33 plt.xlim([0, 1])
34 plt.grid(True)
35 plt.legend()
36 plt.title(’test de Kolmogorov Smirnov’)
37 plt.xlabel(’ valeur de x’)
38 plt.ylabel(’ valeur de F(x)’)
39 # difference des extremum Dn+ / Dn−
40 iminus, iplus = np.argmax(gaps, axis=0)
41 plt.vlines([x[iminus]], ecdfs[iminus], cdfs[iminus], color=’r’,
linestyle=’dashed’, lw=4)
42 plt.vlines([x[iplus]], cdfs[iplus], ecdfs[iplus+1], color=’r’,
linestyle=’dashed’, lw=4)
43 plt.show()

(b) Les résultats de l’exécution du programme précédent sont ci-dessous. On affiche


la liste des 30 valeurs pseudo-aléatoires, et leurs valeurs moyenne et d’écart-type.

On remarque que la moyenne est proche de 1/2 et l’écart-type de 1/12 ≈
0, 289.., ce qui est bien attendu.
Dans le cas de notre liste, on obtient la valeur Dn = 0, 107015.
1 >python3 -u "testKSloiUNIF.py"
2 [0.01570053 0.02201339 0.05299238 0.14536352 0.17125819 0.18821558
3 0.28990822 0.34034789 0.36572352 0.37223254 0.3770155 0.41109851
4 0.42215571 0.47479401 0.49919455 0.50097095 0.53161582 0.55275946
5 0.5710946 0.59916253 0.60039939 0.73089237 0.75183971 0.80135089
6 0.81125272 0.85675098 0.89283176 0.90044934 0.93494939 0.95993382]
7 moyenne : 0.5048089255530567
8.5. EXERCICES 243

8 ecart type : 0.27705222707452004


9 Dn=0.107015, sqrt(n)*Dn=0.586143
10 calcul direct : KstestResult(statistic=0.10701455890759665, pvalue
=0.8820819412733333)
11 >Exit code: 0

(c) La figure 8.20 montre la relation entre les deux fonctions de répartition.
La librairie scipy permet de faire le calcul du Dn directement à partir du test
de Kolmogorov-Smirnov. C’est ce que fait l’instruction :

stats.kstest(x, uniform )
La première valeur de la routine est bien le Dn que nous avions calculé directe-
ment plus haut dans le programme.
On obtient précisément

Dn = 0.10701455890759665

Le test utilisé indique aussi la valeur du paramètre p-value, qui représente une
probabilité, qui doit être supérieure au seuil de signification pour qu’on puisse
admettre l’hypothèse.
On obtient ici la probabilité p-valeur = 0,88208 qui est très supérieure à la
valeur standard de 0,05 du seuil de signification choisi.
On peut donc retenir l’hypothèse que les données sont bien distribuées unifor-
mément dans l’intervalle [0,1].

Figure 8.20 – Test de Kolmogorov-Smirnov sur le générateur uniforme de python 3, pour


un ensemble de 30 données. Les deux tiretés verticaux montrent les plus grandes valeurs
des différences entre les deux fonctions de répartition. On retrouve ainsi graphiquement, la
valeur de 0,107.
Index

algorithme, 229 intervalle de confiance, 151, 209


arrangement, 10, 19 intégrale double, 200
inégalité de Tchebychev, 131, 134
cardinal, 9
changement de variable, 166, 168 jeu de dés, 14
chiffrement par substitution, 12
coefficient du binôme, 12, 28, 30, 33 loi binomiale, 72, 83, 88, 99
combinaison, 11, 16–18 loi continue, 220
complémentaire, 9 loi de Bernoulli, 72
convergence en probabilité, 147 loi de Cauchy, 126
convolution, 156 loi de composition interne, 9
covariance, 104, 125 loi de Laplace, 118
critères de Knuth, 213 loi de Pareto, 111, 121
loi de Pascal, 75, 90
densité de probabilité, 103, 158, 159 loi de Poisson, 76, 86, 98, 99, 229
distribution jointe, 155 loi de Zipf, 77, 96
loi des grands nombres, 132, 145
ensemble des parties, 9 loi exponentielle, 106, 115, 231
espace probabilisable, 70 loi gaussienne, 107, 233
espace probabilisé, 70 loi géométrique, 74, 91
espérance, 71, 104 loi hypergéométrique, 73, 85
faux positif, 52 loi log-normale, 110
fonction caractéristique, 157, 162–164 loi normale, 114
fonction de répartition, 41, 71, 103, 124, 166, loi uniforme, 71, 93, 94
167, 243 loi uniforme continue, 105
fonction génératrice, 157, 162 Markov, 62
formule de Stirling, 12, 26 moment, 156, 160, 161
GCL, 211, 217, 231 Monty Hall, 59
générateur congruentiel, 212 médiane, 104
générateur de Marsaglia, 213 méthode de Monte-Carlo, 171, 181
générateur uniforme, 219 méthode des rectangles, 171
méthode des trapèzes, 175
histogramme, 229, 234
p-valeur, 243
incompatibilité, 39 paradoxe des anniversaires, 43
indépendance, 49 partition, 40
INSEE, 96 permutation, 10, 14
intersection, 9 poids faible, 236

244
INDEX 245

probabilité, 39, 40
probabilité conditionnelle, 49, 51

RANDU, 213, 221

standard minimal, 213, 221


suite de Fibonacci, 211
système complet, 40

TCL, 136, 139


test 2D, 217
test 3D, 217
test de Kolmogorov-Smirnov, 217, 241
test de la moyenne, 214
test du chi2, 214
test spectral, 217
tests Diehard, 214
tests U01, 214
théorème central limite, 133, 137
théorème de Bayes, 50, 54

union, 9

variable aléatoire continue, 104


variance, 71, 104

écart-type, 71, 104


échantillonnage préférentiel, 205
équiprobabilité, 39
événement, 37, 39
événement élémentaire, 37
Retrouvez aussi, du même auteur :

Vous aimerez peut-être aussi