Académique Documents
Professionnel Documents
Culture Documents
Introduction Aux Probabilites A - Thierry Alhalel
Introduction Aux Probabilites A - Thierry Alhalel
Introduction
aux probabilités
avec Python
Graphisme de couverture : Elizabeth Riba
© 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
4 TABLE DES MATIÈRES
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
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
|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
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
n!
Apn =
(n − p)!
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!
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
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.
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
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
(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
(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 :
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
(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
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
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.
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
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
5! = 1 × 2 × 3 × 4 × 5 = 120
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
Solution
(a) On choisit a = b = 1 et on trouve naturellement :
n
2n = Cni = Cn0 + Cn1 + ... + Cnn
i=0
5 10! 10 × 9 × 8 × 7 × 6
C10 = = = 252
5!5! 120
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
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
2702882409454365695156146936259752754961520084465482870073928751066254
2870552219389861248392450237016536260608502154610480220975005067991754
9894219699518475423665484263751733356162464079737887344364574161119497
6045710449857562878805146009942194267523669158566031368626024844281092
96905863799821216320
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
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 .
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
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
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
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 =∅
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
A ∩ (B ∪ C) = (A ∩ B) ∪ (A ∩ C)
A ∪ (B ∩ C) = (A ∪ B) ∩ (A ∪ C)
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)
A∩B =∅
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
P (A ∩ B) = P (A) × P (B)
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
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
(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
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()
P = 1 − Q ≈ 97 %
2.3. EXERCICES SUR LES PROBABILITÉS GÉNÉRALES 45
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
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
PF = (1 − q)100
On en déduit que
1/100
q = 1 − PF = 1 − 0, 991/100 ≈ 1, 0 × 10−4
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 (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)
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
(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 :
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
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)
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
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()
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
(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
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
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
(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
bn+1 = (1 − 0, 6) × an + 0, 7 × bn = 0, 4 × an + 0, 7 × bn
(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 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
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) ;
V (aX + b) = a2 × V (X)
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.
et sa variance
V (X) = E(X 2 ) − E(X)2 = p × (1 − p) = p × q
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
et sa variance
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).
k × C n−k
CN p N (1−p)
P (X = k) = n
CN
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).
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
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
mk
P (X = k) = e−m ×
k!
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
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
où
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
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.
et
n
n(n + 1)(2n + 1)
p2 =
6
p=1
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
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
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
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
E(X) = 0 × (1 − p) + 1 × p = p
et sa variance :
(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
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
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
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
+∞
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
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
E(X) = m
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 :
+∞
(1 − p)10 p(1 − p)10
P (X ≥ 11) = p × (1 − p)i = p × =
1 − (1 − p) p
i=10
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
N (2N )!
P (X = N ) = C2N × (1/2)2N =
22N × (N !)2
N −5 (2N )!
P (X = N − 5) = C2N × (1/2)2N =
22N × (N − 5)! × (N + 5)!
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
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
(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
(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
(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
Figure 3.12 – Espérance gain/coût pour trois valeurs d’amendes : 100, 200 et 400 euros.
P (X > 3) = P (X = 4) + P (X = 5) + P (X = 6)
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
(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
(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
N +1−i 1 N
E(Yi ) = × 2 =
N i−1 N −i+1
1−
N
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
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.
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
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.
(c) La figure 3.17 représente les 1006 communes les plus peuplées en fonction du
rang. On trouve cette fois une tendance :
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.
P (X = j) = Cnj × pj × (1 − p)n−j
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
(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
103
104 CHAPITRE 4. LOIS DE PROBABILITÉ CONTINUES
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)
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
cov(X, Y )
ρ(X, Y ) =
σ(X) × σ(Y )
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)
b = E(Y ) − a × E(X)
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 :
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).
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 .
λ
1 −(x − m)2
f (x) = √ exp
σ 2π 2σ 2
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.
1 −x2
f (x) = √ exp
2π 2
108 CHAPITRE 4. LOIS DE PROBABILITÉ CONTINUES
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
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
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.
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.
(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
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
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
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
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
V (X) = 2 × a2
6×a 3
E(T ) = = − = 100
b4 b
3
On obtient donc b = − .
100
4.3. EXERCICES SUR LES LOIS CONTINUES 121
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
1 1
P (S > M ) = = 2
2 M
ce qui donne la valeur :
√
M= 2 ≈ 1, 414
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
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
où x1 = E(X1 ) et x2 = E(X2 ).
On obtient donc :
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
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
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)
Théorèmes limites
σ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|≥
On a enfin
σ2
P (|X − m| ≥ ) ≤
2
C’est l’inégalité de Tchebychev.
131
132 CHAPITRE 5. THÉORÈMES LIMITES
Sn
On dit que la suite converge en probabilité vers m.
n
Démonstration
Par hypothèse on peut écrire :
On en déduit la variance de Sn /n :
S 1 σ2
n
V = 2
× V (Sn ) =
n n n
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
82
P (|X − 100| ≥ 13) = P (X ≥ 113) + P (X ≤ 87) ≤ ≈ 37, 9 %
132
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
σ
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
P (−A ≤ t ≤ +A) = 0, 95
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
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.
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 :
soit encore
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
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
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
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
de même
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
k−1
k
p C2n 2n−1
a= 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
soit
n−t
C2n
P < n
C2n
ce qui permet de conclure que pour t entier positif
−t2
P ≤ exp
n+t
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
lim P (|Xn − X| ≥ ) = 0
n→+∞
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→+∞ −∞ −∞
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
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()
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
Par ailleurs la lecture de la table en figure 5.1 nous donne c ≈ 1, 96 pour une
probabilité fixée à 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
P (0, 51 ≤ p ≤ 0, 53) ≈ 0, 95
Moments et fonctions
caractéristiques
´ +∞ ´ +∞
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.
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)
155
156 CHAPITRE 6. MOMENTS ET FONCTIONS CARACTÉRISTIQUES
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
−∞
mp = E[(X − m)p ]
Soit aussi : ˆ +∞
mp = xp × f (x) dx
−∞
+∞
t2 t3 tp
MX (t) = 1 + m1 × t + m2 × + m3 × + ... = mp ×
2! 3! p!
p=0
+∞
t2 t3 tp
φX (t) = 1 + i × m1 × t − m2 × + i3 × m3 × + ... = ip × mp ×
2! 3! p!
p=0
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
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
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)
−∞
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
−∞
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
−∞
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
(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
(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
1 1 1
m1 = ; m2 = ; m3 =
2 3 4
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)
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
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
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
√
(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
Soit encore :
√
ˆ + y
P (Y ≤ y) = f (x) dx
+3
2 exp(−2y 1/3 )
g(y) = ×
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
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é.
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
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.
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
Figure 7.4 – Méthode des trapèzes, représentée pour N = 5 points, soit 4 intervalles.
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()
1 >python3 -u "trapeze11.py"
2 integrale methode 1 = 13.685374076495288
3 >Exit code: 0
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 :
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.
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
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
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.
aléatoire F :
N
n 1
π/4 ≈ = F (ri ) = F
N N
i=1
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
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
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
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.
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
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
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
(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
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
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()
(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
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()
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
(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
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.
M ≈ 33.5282412
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
et
M ≈ 33.5282412
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()
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 %.
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.
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é.
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
(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
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
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.
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)
a = 65 539, c = 0, m = 231 , x0 = 1
a = 16 807, c = 0, m = 231 − 1, x0 = 1
1 1
E(ui , ui+1 ) = ui × ui+1 =
N 4
i
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
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.
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
F (x) = 1 − exp(−λx) = u
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.
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()
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.
random.seed(12345)
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.
P (X ≤ x) = F (x) = 1 − exp(−x)
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)
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
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.
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)
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.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.
(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()
(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].
244
INDEX 245
probabilité, 39, 40
probabilité conditionnelle, 49, 51
union, 9