0% ont trouvé ce document utile (0 vote)
16 vues32 pages

Cours4 MS

Le document présente les concepts fondamentaux de la simulation de nombres aléatoires, en se concentrant sur les générateurs de nombres pseudo-aléatoires (PRNG) et leurs propriétés essentielles telles que l'uniformité, l'indépendance et la période. Il décrit différentes méthodes de génération, notamment la méthode du carré moyen de Von Neumann et les générateurs congruentiels, ainsi que des tests statistiques pour évaluer la qualité des suites générées. Enfin, il aborde les tests d'uniformité et d'indépendance pour garantir l'efficacité des nombres pseudo-aléatoires en simulation.

Transféré par

abdza1406
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
16 vues32 pages

Cours4 MS

Le document présente les concepts fondamentaux de la simulation de nombres aléatoires, en se concentrant sur les générateurs de nombres pseudo-aléatoires (PRNG) et leurs propriétés essentielles telles que l'uniformité, l'indépendance et la période. Il décrit différentes méthodes de génération, notamment la méthode du carré moyen de Von Neumann et les générateurs congruentiels, ainsi que des tests statistiques pour évaluer la qualité des suites générées. Enfin, il aborde les tests d'uniformité et d'indépendance pour garantir l'efficacité des nombres pseudo-aléatoires en simulation.

Transféré par

abdza1406
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Modélisation et Simulation

Simulation de nombres aléatoires

Dr. Benbakreti

Département D’Informatique
Faculté des Sciences Exactes
Université Djilali Liabès

2025-2026

2025-2026 1 / 32
Introduction

Dans la simulation de systèmes stochastiques, on utilise des valeurs aléatoires pour représenter
l’incertitude, par exemple les arrivées, les durées de service ou les comportements variables.
Cependant, les ordinateurs étant des dispositifs déterministes, ils ne peuvent pas produire de hasard
véritable. Ils génèrent des nombres pseudo-aléatoires, calculés par des algorithmes qui imitent les
propriétés statistiques du hasard.

Dans ce cours, nous présenterons les notions fondamentales liées aux nombres pseudo-aléatoires.

2025-2026 2 / 32
Caractéristiques d’une suite pseudo-aléatoire
Pour qu’une suite pseudo-aléatoire soit utilisable en simulation, elle doit satisfaire plusieurs propriétés
essentielles :
1. Uniformité
2. Indépendance
Les valeurs doivent être réparties
uniformément sur l’intervalle [0, 1]. Les termes de la suite ne doivent pas être
corrélés.
Aucun sous-intervalle ne doit être sur- ou
sous-représenté. La connaissance de Un ne doit pas
permettre de prédire Un+1 .
La densité de la loi uniforme sur l’intervalle
[0, 1] est donnée par : 3. Période
 La suite finit par se répéter car le
1, si 0 ≤ u ≤ 1,
f (u) = générateur est déterministe.
0, sinon.
La longueur du cycle est appelée période.
Une période suffisamment longue est
nécessaire pour éviter que la suite ne se
répète trop rapidement.
2025-2026 3 / 32
Les propriétés que nous venons d’introduire uniformité, indépendance et période définissent
la qualité attendue d’une suite pseudo-aléatoire utilisée en simulation.

La première étape consiste donc à disposer d’une suite de nombres uniformes sur l’intervalle
[0, 1], car cette distribution constitue le point de départ pour générer des lois plus complexes.

Nous allons maintenant voir comment produire de telles suites de manière algorithmique à
l’aide d’un générateur de nombres pseudo-aléatoires.

2025-2026 4 / 32
Génération de nombres pseudo-aléatoires

Un générateur de nombres pseudo-aléatoires (PRNG) est un algorithme capable de


produire une séquence de valeurs qui imitent le hasard.

En simulation, notre objectif est de produire une suite S de nombres uniformément répartis
dans l’intervalle [0, 1) :

S = (X0 , X1 , . . . , Xn−1 ), Xi ∈ [0, 1)

Le premier terme X0 est appelé le germe ou graine (*seed* en anglais).

Il permet de reproduire exactement une même suite pseudo-aléatoire, propriété essentielle


en simulation numérique.

2025-2026 5 / 32
Remarques importantes :
Une suite réellement aléatoire ne présente aucune régularité détectable : pas de
périodicité, pas de structure, impossibilité de prédire les termes suivants.
Les générateurs pseudo-aléatoires (PRNG) sont déterministes : ils finissent toujours
par répéter leur séquence (période), même si celle-ci peut être très longue.
Avant les ordinateurs, le hasard était produit par des méthodes physiques
(radioactivité, bruit thermique, turbulence) ou des tables de nombres aléatoires.
Avec les ordinateurs, la génération repose sur des algorithmes mathématiques
reproduisant les propriétés du hasard.
Ces algorithmes produisent des nombres pseudo-aléatoires, qui imitent les propriétés
statistiques du hasard (uniformité, indépendance apparente).
Ils sont la base de la simulation numérique, des méthodes de Monte-Carlo et de
nombreuses applications en statistique, finance, physique et intelligence artificielle.

2025-2026 6 / 32
Générateur de Von Neumann : Middle Square Method

Proposé dans les années 1940 par John von Neumann.


L’un des premiers générateurs exploitables sur ordinateur.
Étapes de l’algorithme :
1 Choisir une graine X0 : un entier positif de longueur n.
2 Calculer le carré de X0 (un nombre de longueur 2n). Ajouter des zéros à gauche si nécessaire.
3 Extraire la partie centrale de longueur n pour obtenir X1 .
4 Répéter le processus pour obtenir X2 , X3 , . . .
Xi
5 Normaliser : Ri = .
10n

Les valeurs Ri forment une suite de nombres pseudo-aléatoires obtenus par l’algorithme Middle
square.

2025-2026 7 / 32
Exemple
i Xi Ri Xi2
0 7182 - 51581124
1 5811 0,5811 33767721
2 7677 0,7677 58936329
3 9363 0,9363 87665769
4 6657 0,6657 44315649
5 3156 0,3156 09960336
6 9603 0,9603 92217609
7 2176 0,2176 04734976
8 7349 0,7349 54007801
9 78 0,0078 00006084
10 60 0,006 00003600
11 36 0,0036 00001296
12 12 0,0012 00000144
13 1 0,0001 00000001
14 0 0 00000000
15 0 0 00000000
Pour X0 = 10, qu’observez-vous dans la suite générée ?

Cette méthode présente des faiblesses importantes : elle peut produire des séquences
très courtes, cycliques ou même s’annuler complètement après quelques itérations.
C’est pour cette raison qu’elle a été progressivement abandonnée, et remplacée dès 1952 par
les générateurs congruentiels introduits par Lehmer.

2025-2026 9 / 32
Générateur congruentiel (GCL)
Ces générateurs produisent une suite de nombres (Xi )i≥0 définie par :

Xi+1 = (a Xi + c) mod m,
où a, c, m et X0 sont des entiers positifs donnés.
a est le multiplicateur, c l’incrément et m le module.
Remarques :
Xi
Xi ∈ {0, 1, . . . , m − 1}, Ri = ∈ [0, (m − 1)/m].
m
Si c = 0, on parle de générateur multiplicatif.
La longueur du cycle répété s’appelle la période (P ≤ m).
Un bon générateur possède une période aussi longue que possible.
Un générateur est de pleine période si, pour tout X0 , il produit une période de
longueur m.

2025-2026 10 / 32
Exemple
Pour un X0 = 27, a = 17, c = 43, et m = 100.

i Xi Ri
0 27 0.27
1 (17*27+43) mod 100= 2 0.02
2 (17*2 +43) mod 100 = 77 0.77
3 (17*77+43) mod 100 = 52 0.52
4 (17*52+43) mod 100 = 27 0.27
··· ··· ···

Comment choisir a, c, m pour obtenir P = m ?


Si m = 2b avec b ≥ 2 et c ̸= 0, alors la période maximale P = m est atteinte si et
seulement si :
1 c est premier avec m (i.e. pgcd(c, m) = 1),
2 a = 1 + 4k pour un entier k ≥ 0.
Ces conditions garantissent que le générateur parcourt toutes les valeurs de
{0, 1, . . . , m − 1} avant de se répéter.

2025-2026 11 / 32
Tests statistiques

Avoir une période complète ne garantit pas la qualité statistique du générateur.


Il est donc indispensable de vérifier l’uniformité et l’indépendance des valeurs produites.
Pour cela, on applique différents tests statistiques permettant d’évaluer :
leur adéquation à la loi uniforme U[0,1] (tests d’uniformité) ;
l’absence de dépendance entre termes successifs (tests d’indépendance).

2025-2026 12 / 32
Test d’uniformité :
(
H0 : Ri ∼ U[0,1] (les valeurs sont uniformément distribuées)
H1 : Ri ̸∼ U[0,1] (la distribution n’est pas uniforme)

Test d’indépendance : (
H0 : Ri sont indépendants
H1 : Ri ne sont pas indépendants

Niveau de signification :
α = P(rejeter H0 | H0 vrai)
En pratique, on choisit souvent α = 0.01 ou α = 0.05.

2025-2026 13 / 32
Test du Chi-deux (χ2 )
1) Partitionner l’intervalle [0, 1] en k classes de largeur égale. Sous H0 , la probabilité
théorique pour chaque classe est :
1
pj = , j = 1, 2, . . . , k
k
n
En pratique, l’effectif attendu npj doit être au moins égal à 5, ce qui impose : k ≤ .
5
2) Compter, pour chaque classe, l’effectif observé cj (nombre de valeurs pseudo-aléatoires
tombant dans la classe j).
3) Calculer la statistique de test :

Xk
(cj − npj )2
χ2Obs = .
j=1
npj

4) Décision : Rejeter H0 si
χ2Obs > χ2(k−1,α) .

2025-2026 14 / 32
On utilise la table du χ2 pour obtenir χ2(k−1,α) .
Exemple : k = 7, et α = 0.05, χ2(k−1,α) = 12.592.

2025-2026 15 / 32
Exemple
On suppose les 100 nombres pseudos aléatoires suivants :
Exemple
(cj −npj )2
j classe pj cj npj npj
1 [0,0.1[ 1/10 13 10 0.9
2 [0.1,0.2[ 8 0.4
3 [0.2,0.3[ 7 0.9
4 [0.3,0.4[ 7 0.9
5 [0.4,0.5[ 6 1.6
6 [0.5,0.6[ 9 0.1
7 [0.6,0.7[ 13 0.9
8 [0.7,0.8[ 14 1.6
9 [0.8,0.9[ 13 0.9
10 [0.9,1[ 10 0

χ2Obs = 8.2, α = 0.05, χ29 (α) = 16.92.


χ2Obs = 8.2 < χ29 (α) = 16.92
On ne rejette pas H0 .
Test de Kolmogorov–Smirnov (K–S)
Après le test du χ2 , qui vérifie l’uniformité par classes,
nous introduisons maintenant un second test : le test de Kolmogorov–Smirnov.

Lorsqu’on applique le test de Kolmogorov–Smirnov pour évaluer la qualité des nombres


pseudo-aléatoires, la distribution théorique considérée est la loi uniforme sur l’intervalle
(0, 1).
La fonction de répartition théorique d’une variable uniforme sur (a, b) est :
x −a
F (x ) = P(X ≤ x ) = , a < x < b.
b−a
Pour a = 0 et b = 1, on obtient simplement :

F (x ) = x , pour la loi U(0, 1).

2025-2026 18 / 32
Ainsi, pour chaque valeur ordonnée Ri , on a :

F (Ri ) = Ri .

La statistique du test de Kolmogorov–Smirnov se décompose en :


 
i
Dn+ = max − Ri ,
1≤i≤n n
 
i −1
Dn− = max Ri − .
1≤i≤n n
La statistique finale est :
Dn = max(Dn+ , Dn− ).
Déterminer la valeur critique Dα (n) dans la table K–S.
Règle de décision :

Dn > Dα (n) =⇒ Rejet de H0 (la suite n’est pas uniforme).

2025-2026 19 / 32
Exemple
On suppose les 5 nombres pseudos aléatoires suivants : 0.44, 0.81, 0.14, 0.05, 0.93.

Ri 0.05 0.14 0.44 0.81 0.93


i
0.2 0.4 0.6 0.8 1
n
i
− Ri 0.15 0.26 0.16 -0.01 0.07
n
i −1
Ri − 0.05 -0.06 0.04 0.21 0.13
n
D = max (D + , D − ) = max (0.26, 0.21) = 0.26.
Pour α = 0.05, D0.05 (5) = 0.565.
D < D0.05 (5), On accepte H0 .

Après avoir testé l’uniformité des valeurs générées, nous allons maintenant vérifier leur
indépendance. Nous commençons par le Runs Up and Down Test.

2025-2026 20 / 32
Ce test analyse la suite en comptant les séquences de montées (runs up) et de descentes
(runs down) dans une suite de n valeurs pseudo-aléatoires.
Soit R le nombre total de runs observés. Théoriquement, sa moyenne et sa variance sont :
2n − 1 16n − 29
E (R) = , V (R) = .
3 90
Pour un échantillon de taille suffisamment grande (n > 20), la distribution de R est
approximativement normale. On calcule alors la statistique :

R − E (R)
z= p .
V (R)

Avec un niveau de signification α, on rejette H0 (séquence non aléatoire) si : |z| > U α , où


2
U α2 est la valeur critique tirée de la table de la loi normale centrée réduite.

2025-2026 21 / 32
α
Pour α = 0,05, on calcule : 2 = 0.975. On trouve que U α2 = 1.9 + 0.06.
Exemple
On suppose que l’échantillon contient n = 40 valeurs, et que la séquence des montées (+) et
descentes (-) est la suivante :
+++-+-+---++-+--+-+--+--+-++--++-+--++-
En comptant les blocs consécutifs, on obtient R = 26 runs.
2n − 1 16n − 29
E (R) = = 26.33, V (R) = = 6.79
3 90
La statistique normalisée est :
26 − 26.33
z= √
6.79
Pour un niveau α = 0.05, la valeur critique est U α = 1.96.
2
Comme |z| < 1.96, on ne rejette pas H0 . la séquence est compatible avec l’hypothèse d’aléatoire.

Après avoir étudié le Runs Up and Down Test, nous poursuivons l’analyse avec un autre test
de dépendance : Runs above and below the mean.
Runs above and below the mean

Calculer la moyenne de la séquence.


Transformer la suite en une séquence binaire : attribuer 1 aux valeurs situées au-dessus
de la moyenne et 0 à celles situées en dessous.
Soient :
▶ n1 = nombre de valeurs au-dessus de la moyenne,
▶ n2 = nombre de valeurs en dessous (ou égales),
▶ R = nombre total de runs dans la suite binaire,
▶ N = n1 + n2 .
L’espérance du nombre de runs est 1 :
2n1 n2
E (R) = + 1.
N

2n1 n2
1. Certains ouvrages utilisent E (R) = N
+ 12 .
La variance du nombre de runs vaut :
2n1 n2 (2n1 n2 − N)
V (R) = .
N 2 (N − 1)

Pour un grand échantillon (N > 20), on utilise l’approximation normale :

R − E (R)
z= p .
V (R)

|z| > U α =⇒ rejet de H0 .


2

Remarque : Pour les deux tests de runs, si N ≤ 20, on utilise les tables exactes ;
l’approximation normale n’est valable que pour les grands échantillons.

2025-2026 25 / 32
Exemple
Considérons la séquence suivante de 0/1 composée de n = 30 observations :

001001101111110101110101010010

On compte :

R = 19, n1 = 17 (valeurs égales à 1), n2 = 13 (valeurs égales à 0).

2 ∗ 17 ∗ 13
E (R) = + 1 = 15.73
30
et

2 ∗ 17 ∗ 13(2 ∗ 17 ∗ 13 − 30)
V (R) = = 6.977165
302 (29)
19 − 15.733
z= √
6.977165
α = 0.05, U α = 1.96. On ne rejette pas H0 .
2
2025-2026 26 / 32
La plupart des générateurs pseudo-aléatoires produisent des variables indépendantes et
identiquement distribuées selon une loi uniforme sur (0, 1).
Pour simuler une variable aléatoire suivant une loi donnée de fonction de répartition F , il
faut transformer ces valeurs uniformes en une variable ayant la distribution souhaitée.
Comment obtenir une variable de loi F à partir d’un uniforme (0, 1) ?
La méthode de la transformation inverse apporte une réponse simple lorsque la fonction de
répartition F est inversible.

2025-2026 27 / 32
Inversion de la fonction de répartition (cas continu)

Si la fonction de répartition F est continue, strictement croissante, et que son inverse F −1


existe, alors la méthode de la transformation inverse permet de simuler une variable de loi F
à partir d’un uniforme.
a) Générer une variable U ∼ U(0, 1) ;
b) Poser l’égalité U = F (X ) ;
c) En déduire : X = F −1 (U).
Ainsi, la variable X = F −1 (U) suit la loi de fonction de répartition F .

2025-2026 28 / 32
Exemple
Soit X une variable aléatoire suivant une loi exponentielle de paramètre λ > 0, de densité :
(
λe −λx , si x ≥ 0,
f (x ) =
0, sinon.

La fonction de répartition est :

F (x ) = 1 − e −λx .

Par inversion :
1
u = F (x ) = 1 − e −λx ⇒ x = F −1 (u) = − ln(1 − u).
λ
Ainsi, si u1 , u2 , . . . , un sont des nombres pseudo-aléatoires suivant U(0, 1), on obtient
une suite simulée de valeurs de X : xi = − λ1 ln(1 − ui ), i = 1, 2, . . . , n.

2025-2026 29 / 32
Inversion de la fonction de répartition (Cas Discret)

Pour obtenir les valeurs d’une variable aléatoire discrète X caractérisée par sa fonction
P
de masse probabiliste P{X = xj } = pj , où j = 1, 2, . . . , n et nj=1 pj = 1, on commence
par générer une variable aléatoire u ∼ U(0, 1).
Ensuite, les valeurs de X sont déterminées comme suit :


x1 si 0 ≤ u < p1 ,





x si p1 ≤ u < p1 + p2 ,
 2
..
F −1 (u) = .



 X
n−1



 pk ≤ u < 1.
xn si
k=1

2025-2026 30 / 32
Exemple
xi 1 2 3 4 5
Soit la loi de probabilité suivante :
pi 0.1 0.2 0.3 0.3 0.1
La fonction de répartition de cette loi est donnée dans le tableau suivant :

xi 1 2 3 4 5
F (xi ) 0.1 0.3 0.6 0.9 1.0

Pour simuler cette loi, on génère une suite de variables U ∼ U(0, 1). Ensuite, la fonction
pseudo-inverse permet d’obtenir les réalisations de X :




1 si 0 ≤ u < 0.1,



 0.1 ≤ u < 0.3,
2 si
F −1 (u) = 3 si 0.3 ≤ u < 0.6,



 0.6 ≤ u < 0.9,

 4 si


5 si 0.9 ≤ u < 1.
La méthode de Box–Muller

Peut-on simuler directement une variable suivant la loi normale à partir d’une loi uniforme
simple ?
Une solution classique : la méthode de Box–Muller.
Théorème
Soient U1 et U2 deux variables aléatoires indépendantes, uniformes sur l’intervalle (0, 1). Les
variables définies par :
q q
Z1 = −2 ln(U1 ) cos(2πU2 ), Z2 = −2 ln(U1 ) sin(2πU2 ),

sont deux variables aléatoires normales centrées réduites indépendantes, c’est-à-dire :

Z1 , Z2 ∼ N (0, 1).

2025-2026 32 / 32

Vous aimerez peut-être aussi