SIMULATION DE VARIABLES ALEATOIRES
Samuel BOWONG
Université de Douala, Cameroun
Licence 2 d’Informatique
Année académique 2024-2025
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES 1 / 92
1 Introduction
Nombres pseudo-aléatoires et simulation
Simulation de nombres aléatoires
Simulation d’une loi uniforme sur [0, 1]
2 Génération des variables aléatoires
Simulation de la loi Bernoulli de paramètre p
Loi binomiale de paramètres(n, p)
Loi uniforme sur {0, 1 . . . , n − 1}
Loi uniforme sur [a, b]
Loi exponentielle de paramètre λ
Loi géomètrique de paramètre p
Loi de Poisson de paramètre λ
Loi gaussienne centrée réduite : Méthode de Box-Muller
3 Méthodes générales
4 Simulation de vecteurs aléatoires
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES 2 / 92
Introduction
Généralités
La simulation des variables aléatoires est une technique couramment
utilisée en statistiques, en probabilités et dans de nombreux domaines
appliqués (comme la finance, l’ingénierie, la biologie, etc.) pour générer
des valeurs qui suivent une distribution de probabilité donnée
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES 3 / 92
Introduction
Généralités
On commence ce cours par un théorème sans preuve !
Théorème
(Théorème fondamental de la simulation) : Toute variable aléatoire X
dans Rd (ou dans un espace polonais) peut s’écrire sous la forme
X = φ(U1 , . . . , Un ) avec n ≥ 1, où (U1 , . . . , Un ) est uniforme sur [0, 1]n
et φ est une fonction borélienne.
Ce résultat est un résultat d’existence de la fonction φ mais n’est pas
constructif. Il ne permet pas de trouver la fonction φ permettant la
simulation sous cette forme. Si d = 1 la fonction φ est la fonction quantile.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES 4 / 92
Introduction
Généralités
Ce théorème important indique qu’il est possible d’obtenir des réalisations
de n’importe quelle variable aléatoire à partir d’une transformation
d’uniformes sur [0, 1]. La première section se consacre donc à la simulation
de variables aléatoires uniformes sur [0, 1] (ouvert ou fermé en 0 ou 1 car
la mesure de Lebesgue ne charge pas les points...).
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES 5 / 92
Introduction
Nombres pseudo-aléatoires et simulation
Pour mettre en oeuvre des algorithmes probabilistes il est nécessaire
de travailler avec des réalisations de variables aléatoires.
On verra qu’il est possible d’obtenir des réalisation de toute loi à
partir de réalisations indépendantes de la loi uniforme sur [0, 1].
Obtenir des réalisations indépendantes de la loi uniforme sur [0, 1]
(produire du vrai hasard) est impossible sur les machines
déterministes actuelles.
Cependant on peut construire des algorithmes qui produisent des
suites de nombres vérifiants de bonnes propriétés statistiques :
Adéquation à la loi uniforme, par exemple par un test de
Kolmogorov-Smirnov
Indépendance entre les nombres générés (en fait test de non
corrélation)
Tests sur des problèmes classiques de probabilité
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES 6 / 92
Introduction
Nombres pseudo-aléatoires et simulation
Un générateur de nombres pseudo-aléatoires est un algorithme
déterminisite qui vérifie de bonnes propriétés théoriques et qui
génère des nombres, appelés pseudo-aléatoires, qui possèdent de
bonnes propriétés statistiques.
Cet algorithme déterministe (généralement une récurrence) a un état
propre qui doit être initialisé.
L’état initial est appelée la graine du générateur (ou seed en anglais).
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES 7 / 92
Introduction
Nombres pseudo-aléatoires et simulation
Plus généralement un générateur est la composition de deux fonctions
g ◦f
Fonction de transition : f : S → S où S est l’espace d’état du
générateur. Par exemple S = Zm pour l’algorithme rand avec une
fonction f linéaire
Fonction de sortie : g : S → O ⊂ [0, 1[ où O est l’espace de sortie.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES 8 / 92
Introduction
Simulation de nombres aléatoires
Nous allons voir dans ce qui suit que, à la base de toute méthode de
simulation d’une variable aléatoire, se trouve la loi uniforme.
En outre, nous montrerons comment on peut construire des
générateurs de nombres aléatoires.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES 9 / 92
Introduction
Simulation d’une loi uniforme sur [0,1]
Dans tous les logiciels classiques dédiés au calcul numérique, il existe
de très bons générateurs de nombres aléatoires.
Nous présentons leur principe général de fonctionnement.
La méthode la plus couramment utilisée est la méthode des
congruences linéaires. On simule un nombre aléatoire sur [0, 1]
comme suit :
On construit une suite (xn )n≥0 de nombres entiers compris entre 0 et
m − 1 de la façon suivante :
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES10 / 92
Introduction
Simulation d’une loi uniforme sur [0,1]
1 On choisit un nombre entier quelconque, appelé valeur initiale
x0 = valeur initiale (1)
2 On construit la suite xn par récurrence
xn+1 = axn + b (modulo m), (2)
avec a, b, m des entiers positifs, qu’il faudra choisir soigneusement, si l’on
veut que les caractéristiques de la suite soient performantes. Sedgewick
préconise le choix suivant :
a = 31415821
b = 1
m = 108 .
Cette méthode permet de simuler des entiers pseudo aléatoires entre 0 et
m − 1.
3Pour obtenir un nombre aléatoire entre 0 et 1 on divise le résultat, cet entier
aléatoire ainsi généré, par m
xn
u= INF274: Simulation des processus(3)
aléatoiire
Samuel BOWONG ( Samuel BOWONG) m ALEATOIRES11 / 92
SIMULATION. DE VARIABLES
Introduction
Simulation d’une loi uniforme sur [0,1]
On dit que de tels nombres sont (pseudo-)aléatoires pusiqu’ils sont
obtenus par une règle arithmétique. Mais la grande périodicité de m
et un choix judicieux de a et b permettent d’affirmer (cf. Knuth) que
leur loi de distribution est ”indistinguable presque sûrement” de vrais
nombres aléatoires.
Le générateur précédent fournit des résultats acceptables dans les cas
courants. Cependant, sa période (ici m = 108 ) peut se réveler parfois
insuffisante. On peut alors, obtenir des générateurs de nombres
aléatoires de période arbitrairement longue en augmentant m.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES12 / 92
Introduction
Rappel : Fonction de repartition
Définition
On appelle fonction de répartition de X la fonction F :→ [0, 1] définie par
F (x) = P(X ≤ x) pour tout x ∈ R. En anglais cette fonction s’appelle
cumulative distribution function (cdf).
On rappelle des propriétés usuelles.
Propriété
La fonction de répartition F de X vérifie
F est croissante et continue à droite,
Si X est finie p.s. lim F (x) = 0 et lim F (x) = 1
x→−∞ x→+∞
Pour tout x ∈ R, la limite à gauche de F en x existe et vaut
F (x − ) = P(X < x). Ainsi, F (c) − F (x − ) = P(X = x) et la fonction F
possède au plus un nombre dénombrable de points de discontinuité.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES13 / 92
Génération de variables aléatoires
Simulation de variables aléatoires
On présentera dans cette partie un panel de méthodes pour la
simulation de variables aléatoires.
Nous commençons par rappeler les principes de simulation pour les
lois classiques.
Ensuite nous introduisons les méthodes générales de simulation pour
les variables aléatoires à valeurs discrètes et continues.
Soit (Ω, F, P) un espace de probabilité et X une variable aléatoire
réelle sur cet espace. On notera F sa fonction de répartition et f sa
densité. Plus précisément, pour tout x ∈ R :
F (x) = P(X ≤ x)
et
d
f (x) = F (x)
dx
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES14 / 92
Génération de variables aléatoires
Simulation d’une loi uniforme sur [0,1]
Principe : Pour simuler des variables aléatoires de loi quelconque,
l’idée est de se ramener à la loi uniforme sur [0, 1]. La loi uniforme sur
[0, 1] est donc à la base de toute simulation de variable aléatoire.
Rappelons ses propriétés.
Soit U une variable aléatoire de loi uniforme sur [0, 1], U ∼ U[0, 1].
Dans ce cas :
0 si x < 0
FU (x) = x si 0 ≤ x ≤ 1
1 si. x > 1
et
1 si x ∈ [0, 1]
fU (x) = 1x∈[0,1] =
0 si x ∈
/ [0, 1]
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES15 / 92
Génération de variables aléatoires
Simulation de variables aléatoires
Cadre général : On suppose qu’on dispose d’un générateur de variables
aléatoires de loi uniforme sur [0, 1] indépendantes.
L’hypothèse d’indépendance des valeurs est une des conditions essentielles
pour la validité de la plupart des algorithmes présentés dans la suite.
Exemple
Matlab possède une fonction rand() dont les appels successifs
fournissent une suite de variables aléatoires ”indépendantes” et
identiquement distribuées, de loi uniforme sur [0, 1]. Nous ne nous
intéresserons pas ici à la conception d’une telle fonction.
Les générateurs sont souvent construits à partir d’une relation de
congruence sur de nombres de grande dimension et initialisés par
exemple à partir de l’horloge de la machine. Il s’agit des générateurs
de nombres pseudo-aléatoires, notamment les valeurs obtenues ne
sont qu’apparemment indépendantes.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES16 / 92
Génération de variables aléatoires
Simulation de variables aléatoires
Remarque
Une variable aléatoire U de loi uniforme sur [0, 1] est différente de 0 et 1
presque surement. En particulier, si Λ(dx) note la mesure de Lebesgue, on
a Z
P(U ∈ {0, 1}) = 1{0,1}dΛ=Λ({0,1}) = 0
{0,1}
Remarque
En Matlab la fonction rand ne renvoie que des valeurs différentes de 0 et
1.
Par contre en Python
import numpy as np
U = [Link](0, 1, 1000) Génère 1000 nombres uniformes entre 0 et 1
Objectif de ce chapitre :Vous apprendre à construire des méthodes pour
simuler une variable aléatoire ou un vecteur aléatoire suivant une loi
INF274: Simulation des processus aléatoiire
donnée,
Samuel différents
BOWONG de laBOWONG)
( Samuel loi uniforme
SIMULATION. sur [0, 1].
DE VARIABLES ALEATOIRES17 / 92
Génération de variables aléatoires
Simulation de la loi Bernoulli de paramètre p
Soit p ∈ [0, 1]. On veut simuler une variable aléatoire X ∼ B(p) de loi
de probabilité
µ(x) = pδ1 (x) + (1 − p)δ0 (x). (4)
On peut exprimer cela aussi sous la forme X est une variable aléatoire
à valeurs dans {0, 1} et sa loi est donnée par p0 = P(X = 1) = p et
p1 = P(X = 0) = 1 − p. On remarque que p0 + p1 = 1.
Algorithme : Pour simuler X on tire U une loi uniforme sur [0, 1] et
on définit
1 si U≤p
X =
0 sinon
c’est-à-dire X = 1U≤p .
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES18 / 92
Génération de variables aléatoires
Simulation de la loi Bernoulli de paramètre p
On propose deux fonctions pour simuler cette variable aléatoire. La
première ne rend qu’une réalisation d’une variable aléatoire de la loi de
Bernoulli de paramètre p, la seconde renvoie un k-échantillon, qui sera
utilisé par la suite dans la simulation de la loi binomiale :
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES19 / 92
Génération de variables aléatoires
Simulation de la loi Bernoulli de paramètre p
Algorithmes Matlab
function x=bernoulli1(p)
% tirage suivant la loi de Bernoulli de parametre p
x=0 ;
if rand()≺ p
x=1 ;
end
function x=bernoulli2(k,p)
% tirage d’un k-echantillon suivant la loi de Bernoulli de parametre p
y=rand(1,k),
x=(y≺ p) ;
end
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES20 / 92
Génération de variables aléatoires
Simulation de la loi Bernoulli de paramètre p
Exemple
(Pile ou face)
On veut simuler une variable aléatoire de loi ”Pile ou face” i.e. X ∼ B( 12 ).
On tire U une uniforme sur [0, 1]et on définit
U ≤ 12
”Pile” si
X =
”Face” sinon
formellement on peut aussi écrire X = 1{U≤ 1 } .
2
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES21 / 92
Génération de variables aléatoires
Loi binomiale de paramètres (n, p)
Soient n ∈ N∗ et p ∈ [0, 1]. On veut simuler X ∼ B(n, p) donc de loi
n
X
µ(x) = Ckn p k (1 − p)n−k δk (x). (5)
k=0
Donc X est une variable aléatoire à valeurs dans {0, . . . n} de loi
donnée par les probabilités pk = P(X = k) = Ckn p k (1 − p)n−k , pour
tout k ∈ {0, . . . , n}.
On sait qu”une variable aléatoire binomiale peut être représentée
comme la somme de n variables aléatoires indépendantes de Bernoulli
de paramètre p.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES22 / 92
Génération de variables aléatoires
Loi binomiale de paramètres (n, p)
Plus précisément on a le résultat suivant :
Lemme
Soient (Yi )1≤i≤n des variables aléatoires indépendantes et identiquement
Pn
distribuées de loi de Bernoulli de paramètre p, alors X = Yi suit une loi
i=1
binomiale de paramètres (n, p).
Algorithme
Il suffit donc de simuler n variables aléatoires indépendantes de loi B(p) et
d’en faire la somme. On simule (Ui )1≤i≤n , n v.a.i.i.d. de loi uniforme sur
[0, 1] et on définit
X n
X = 1{Ui ≤p}
i=1
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES23 / 92
Génération de variables aléatoires
Loi binomiale de paramètres (n, p)
Algorithme Matlab
Nous utilisons ici la fonction Matlab définie précédemment qui simule un n
échantillon de loi de Bernoulli de paramètre p.
function x=binomiale(n,p)
% tirage suivant la loi binomiale de parametres (n,p)
x=sum(bernoulli2(n,p)) ;
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES24 / 92
Génération de variables aléatoires
Méthode générale pour une variable aléatoire
discrète
Soit X une variable aléatoire sur un espace de probabilité (Ω, F, P), telle
que X (Ω) = {x0 , x1 , . . . .} = {xi }i∈I avec I = N ou I = {0, 1, . . . , n}. Pour
tout i ∈ I , pi = P(X = xi ).
Considérons le cas I = {0, . . . , n} fini, le second se traitant de la même
manière. La loi de probabilité de X est donnée par
n
X
µ(x) = pi δxi (x). (6)
i=0
où
n
X
pi = P(X = xi ) = µ(xi ), ∀i ∈ I et pi = 1.
i=0
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES25 / 92
Génération de variables aléatoires
Méthode générale pour une variable aléatoire
discrète
Notons par qk le cumul des pi , pour 0 ≤ i ≤ k,i.e.
k
X
qk = pi (7)
i=0
On a alors q0 = p0 et qn = 1.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES26 / 92
Génération de variables aléatoires
Méthode générale pour une variable aléatoire
discrète
Nous souhaitons simuler une variable aléatoire de même loi que X . Pour ce
faire on va construire une variable aléatoire Y telle que
P(X = xi ) = P(Y = xi ) = pi , ∀i ∈ I ,
àl’aide d’une variable aléatoire U de loi uniforme sur [0, 1].
Algorithme : L’algorithme s’écrit : on tire U une uniforme sur [0, 1] et on
pose
Y = x0 si U ≤ p0 = q0 ,
Y = xk si qk−1 < U ≤ qk , pour k ∈ {0, . . . , n − 1}
ce qui s’exprime également sous la forme
n
X
Y = x0 1{U≤q0 } + xi 1{qi−1 ≤U≤qi }
i=1
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES27 / 92
Génération de variables aléatoires
Méthode générale pour une variable aléatoire
discrète
Remarque
Cette méthode générale peut s’appliquer pour toutes les variables
aléatoires discrètes particulières que nous allons étudier.
Remarque
Le nombre N de tests nécessaires satisfait N = 1 si et seulement si u ≤ p0 ,
et pour i > 1,
N = i ⇐⇒ qi−1 < u ≤ qi .
On a donc intérèt à réordonner les (xi )i≥0 dans l’ordre des (pi )i≥0
décroissants.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES28 / 92
Génération de variables aléatoires
Méthode générale pour une variable aléatoire
discrète
L’algorithme suivant simule une variable représentative pour cette loi :
Algorithme Matlab :
function y=simuldiscrete(x,p)
% simulation d’une v.a. de loi discrete
% x=vecteur des valeurs prises, p=vecteur des probabilites
u=rand() ; q=p(1) ; i=0 ;
while (u≻q) ; i=i+1 ; q=q+p(i) ; end ;
y=x(i) ;
end
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES29 / 92
Génération de variables aléatoires
Méthode générale pour une variable aléatoire
discrète
Preuve : En effet, on a :P(X = x0 ) = P(rand() ≤ p0 ) = p0 et pour k ≥ 1,
k−1 k
!
X X
P(X = xk ) = P pi < rand() ≤ pi = pk .
i=0 i=0
Remarque
Le nombre N de tests nécessaires satisfait N = 1 ssi u ≤ p0 , et pour i > 1,
N = i ⇔ qi−1 < u ≤ qi
On a donc intérêtà réordonner les (xi )i>0 dans l’ordre des (pi )i≥0
décroissants.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES30 / 92
Génération de variables aléatoires
Loi uniforme sur {0, 1, . . . , n − 1}
On veut simuler X de loi uniforme sur {0, 1, . . . , n − 1}, donc de loi
n−1
X
µ(x) = δk (x). (8)
k=0
Méthode 1 : Nous allons utiliser le résultat suivant :
Lemme
Si U est une variable aléatoire de loi uniforme sur [0, 1], alors la partie
entière X = [nU] suit la loi uniforme sur {0, 1, . . . , n − 1}.
En admettant ce résultat, l’algorithme s’écrit :
Algorithme Matlab
function x=uniforme1(n)
% tirage suivant la loi uniforme sur {0, . . . , n − 1}
x=floor(n⋆rand()) ;
end INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES31 / 92
Génération de variables aléatoires
Loi uniforme sur {0, 1, . . . , n − 1}
Preuve : On note X la variable aléatoire rendue par cette fonction.
Comme P(0 ≤ rand() < 1) = 1, on a P(0 ≤ n*rand() < n) = 1 et
P(floor (n ∗ rand()) ∈ {0, 1, . . . , n − 1}) = 1.
Donc X prend ses valeurs dans {0, 1, . . . , n − 1}.
Maintenant, soit k ∈ {0, 1, . . . , n − 1}
P(X = k) = P(floor (n ∗ rand()) = k) = P(floor (n ∗ rand()) < k + 1)
k k+1 1
= P n ≤ rand() < n = n
Ce qui prouve le résultat souhaité.
Méthode 2 : En utilisant la méthode générale de simulation d’une
variable aléatoire discrète,
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES32 / 92
Génération de variables aléatoires
Loi uniforme sur [a, b]
On souhaite simuler X une variable al’eatoire de loi uniforme sur l’ntervalle
[a, b] pour a< b, avec densité
1
si x ∈ [a, b],
1 b−a
f (x) = 1 (x) =
b − a [a,b]
0 si x ∈
/ [a, b],
Lemme
Si U suit la loi uniforme sur [0, 1], alors, si a < b et a, b ∈ R, la variable
aléatoire X = a + (b − a)U suit la loi uniforme sur [a, b].
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES33 / 92
Génération de variables aléatoires
Loi uniforme sur [a, b]
Preuve : Soit φ : R → R une fonction continue bornée. En faisant le
changement de variable x = a + (b − a)u, on a
Z 1 Z 1
1
E(φ(a + (b − a)U)) = φ(a + (b − a)u)du = φ(x) dx,
0 0 b−a
ce qui signifie que X est une variable aléatoire de densité
1
f (x) = 1 (x) ainsi la densité de la loi uniforme sur [a, b].
b − a [a,b]
Algorithme Matlab
function x=uniforme2(a,b)
% tirage suivant la loi uniforme sur [a,b]
x=a+(b-a)⋆rand() ;
end
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES34 / 92
Génération de variables aléatoires
Loi exponentielle de paramètre λ
Soit λ > 0. On souhaite simuler une variable aléatoire X de loi
exponentielle de paramètre λ, avec
λ exp(−λx) si x ≥ 0
f (x) = λ exp(−λx)1R+ = (9)
0 si x < 0
Sa fonction de répartition est F (x) = P(X ≤ x) = 1 − exp(−λx). Cette
fonction est une bijection de ]0, +∞[ dans ]0, 1[, d’inverse
1
G (u) = − ln(1 − u).
λ
Lemme
Si U est de loi uniforme sur [0, 1], alors G (U) suit la loi exponentielle de
paramètre λ.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES35 / 92
Génération de variables aléatoires
Loi exponentielle de paramètre λ
En utilisant ce lemme on déduit l’algorithme suivant pour la simulation de
la loi exponentielle :
Algorithme Matlab
function x=exponentielle(a)
% tirage suivant la loi exponentielle de paramètre a
x=- log(rand())/a ;
end
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES36 / 92
Génération de variables aléatoires
Loi géométrique de paramètre p
Soit p ∈]0, 1]. On veut simuler une variable aléatoire géométrique de
paramètre p, donc de loi
∞
X
µ(x) = (1 − p)k−1 pδk (x). (10)
k=1
On a donc dans ce cas les probabilités pk = P(X = k) = (1 − p )k−1 p pour
tout k ≥ 1. Plusieurs méthodes sont possibles.
Méthode 1 : En utilisant la loi exponentielle :
Lemme
ln U
Si U suit la loi uniforme sur [0, 1], alors X = 1 + est une
ln(1 − p)
variable aléatoire qui suit la loi géométrique de paramètre p.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES37 / 92
Génération de variables aléatoires
Loi géométrique de paramètre p
ln U
Preuve Notons X = 1 + , Par définition de la partie enti
ln(1 − p)
‘ere, X prend ses valeurs dans N∗ . Soit maintenant k ∈ N∗ . Calculons :
ln U
P(X = K ) = P 1 + =k ,
ln(1 − p)
ln U
= P =k −1
ln(1 − p)
ln U
= P k −1≤ <k ,
ln(1 − p)
= P(k ln(1 − p) < ln U ≤ (k − 1) ln(1 − p))
= (1 − p)k−1 − (1 − p)k
= 1 − p)k−1 p.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES38 / 92
Génération de variables aléatoires
Loi géométrique de paramètre p
L’algorithme correspondant s’écrit
Algorithme Matlab :
function x=geometrique2(p)
% tirage suivant la loi geometrique de parametre p
x=1+floor(log(rand())/log(1-p)) ;
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES39 / 92
Génération de variables aléatoires
Loi géométrique de paramètre p
Méthode 2 : En utilisant la loi de Bernoulli :
Lemme
Si (Xi )∈N∗ sont des variables aléatoires i.i.d. de loi de Bernoulli de
paramètre p, alors N = min{i : Xi = 1} est une variable aléatoire qui suit
une loi géométrique de paramètre p.
L’algorithme correspondant s’écrit.
function x=geometrique1(p)
% tirage suivant la loi geometrique de parametre p
x=1 ;
while rand()≻p, x=x+1 ;
end
Méthode 3 : En utilisant la méthode générale pour la simulation des
variables aléatoires discrètes
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES40 / 92
Génération de variables aléatoires
Loi de Poisson de paramètre λ
Soit λ ∈ R+ . On veut simuler une variable aléatoire X ∼ P(λ), donc de loi
donnée par
+∞
X λk
µ(x) = exp(−λ) δk (x). (11)
k!
k=0
k
On est ici dans la situation pk = P(X = k) = λk! e −λ Une variable aléatoire
poissonienne ne prend pas ses valeurs dans un ensemble fini, mais on peut
utiliser la méthode générale pour les variables aléatoires discrètes. La
méthode proposée ici annonce la méthode de la fonction inverse.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES41 / 92
Génération de variables aléatoires
Loi de Poisson de paramètre λ
Méthode 1 : Cumul des durées exponentielles. Une première méthode pour la
simulation de variables aléatoires de Poisson est issue d’une des propriétés des
processus de Poisson, il s’agit du cumul de durées exponentielles.
On sait que si des événements surviennent àdes dates séparées par des durées
exponen- tielles de paramètre λ, le nombre d’événements survenant en une unité
de temps suit une loi de Poisson de même paramètre.
Lemme
Soient(Xi )i∈N∗ des variables aléatoires i.i.d. exponentielles de paramètre λ. La
variable aléatoire définie par
si X1 ≥ 1
0
i
N= P
max{i ≥ 1 : Xj ≤ 1} sinon
j=1
suit une loi de Poisson de paramètre λ
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES42 / 92
Génération de variables aléatoires
Loi de Poisson de paramètre λ
Preuve : Soit k ∈ N. On évalue :
!
i
P k+1
P
P(N = k) = P Xj ≤ 1 < Xj ,
j=1 j=1
λk+1 exp(−λ(x1 + . . . + xk+1 ))1{x1 +...+xk ≤1}
R
= Rk+1
+
×1{xk+1 >1−(x1 +...+xk )} dx1 . . . dxk+1
k+1 exp(−λ(x + . . . + x ))1
R
= k λ
R 1 k {x1 +...+xk ≤1}
+
R +∞
× 1−(x1 +...+xk ) λ exp(−λxk+1 )dxk+1 dx1 . . . dxk ,
λk exp(−λ(x1 + . . . + xk ))1{x1 +...+xk ≤1} exp(−λ)
R
= Rk+
× exp(λ(x1 +
R . . . + xk ))dx1 . . . dxk ,
= λk exp(−λ) Rk 1{x1 +...+xk ≤1} dx1 . . . dxk
+
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES43 / 92
Génération de variables aléatoires
Loi de Poisson de paramètre λ
Pour calculer la dernière intégrale, on effectue le changement de variable
s1 = x1 , s2 = x1 + x2 , . . . sk = x1 + . . . + xk :
R R
Rk 1{x1 +...+xk ≤1} dx1 . . . dxk =
+ Rk 1{s1 ≤s2 ≤...sk ≤1} ds1 . . . dsk
+
R1 R sk R s2 1
= 0 dsk 0 dsk−1 . . . 0 ds1 =
k!
λk −λ
On voit donc que P(N = k) = k! e Ce qui termine la preuve. □
Remarque
Il faut donc simuler des variables aléatoires exponentielles de paramètre λ
et compter le nombre de simulations nécessaires pour dépasser 1, ou bien
simuler des variables aléatoires exponentielles de paramètre 1 et compter le
nombre de simulations nécessaires pour dépasser λ.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES44 / 92
Génération de variables aléatoires
Loi de Poisson de paramètre λ
Remarque
Soient (Ui )i∈N∗ des variables aléatoires i.i.d. de loi uniforme sur [0, 1], alors
si Xi = − λ1 ln(Ui ), les (Xi )i∈N∗ sont des variables aléatoires i.i.d.
exponentielles de paramètre λ, et
i i i
X 1 Y Y
Xj ≤ 1 ⇔ − ln Uj ≤ 1 ⇔
Uj ≥ exp(−λ)
λ
j=1 j=1 j=1
L’algorithme s’écrit :
Algorithme Matlab :
function x=poisson(a)
% tirage suivant la loi de Poisson de parametre a
test=exp(-a) ;x=0 ;prod=rand() ;
while (prod≻=test), x=x+1 ; prod=prod*rand() ; end ;
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES45 / 92
Génération de variables aléatoires
Loi de Poisson de paramètre λ
Méthode 2 : En utilisant la méthode générale pour les variables aléatoires
discrètes
On sait que
λk −λ
X ∼ P(λ) ⇔ pk = P{X = k} = e (pour k ∈ N)
k!
ce qui implique que
λ
pk+1 = pk ,
k +1
k
P
et en posant qK la somme des pj pour 0 ≤ j ≤ k, (qk = pj ) on a
j=0
λ
pk .
qk+1 = qk +
k +1
On simule donc une variable de Poisson de paramètre λ en prenant
X
X = k1qk−1 ≤U≤qk
k≥0
avec la convention q−1 = 0. Cet algorithme est assez simple à programmer.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES46 / 92
Génération de variables aléatoires
Loi gaussienne centrée réduite : Méthode de
Box-Muller
La loi normale n’a pas une densité à support compact et on ne connaı̂t pas
d’expression simple de l’inverse de sa fonction de répartition. Nous
utiliserons le résultat suivant pour sa simulation :
Lemme
Soient U1 et U2 deux variables aléatoires de loi uniforme sur [0, 1],
supposées
√ de plus indépendantes. Alors,√ si on pose
X = −2 ln U1 cos(2πU2 ) et Y = −2 ln U1 sin(2πU2 ) les variables
aléatoires X et Y sont i.i.d. de loi gaussienne centrée réduite.
Ceci conduit àune méthode de simulation simple pour une loi gaussienne,
basée sur la simulation de deux variables aléatoires uniformes sur [0, 1].
C’est la méthode de Box-Muller.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES47 / 92
Génération de variables aléatoires
Loi gaussienne centrée réduite : Méthode de
Box-Muller
Algorithme Matlab :
function [x,y]=boxmuller
%tirage de deux N(0,1) independantes
r=sqrt(-2*log(rand())) ; t=2*pi*rand() ;
x=r*cos(t) ; y=r*sin(t) ;
end
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES48 / 92
Génération de variables aléatoires
Méthode de simulation par inversion de la fonction
de répartition
Principe La méthode d’inversion est la plus simple des méthodes générales
de simulation. Elle consiste à composer un appel Random avec l’inverse
de la fonction de répartition de la loi à simuler. Soit F cette fonction de
répartition. C’est une fonction de R dans [0, 1] , croisante au sens large et
continue à droite. Nous convenons de définir son inverse de la façon
suivante.
∀u ∈ [0, 1], F −1 (u) = inf{x; F (x) ≥ u}
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES49 / 92
Génération de variables aléatoires
Méthode de simulation par inversion de la fonction
de répartition
On veut simuler une variable aléatoire X de fonction de répartition F .
La méthode utilisée pour simuler une loi exponentielle est en fait générale :
dès que l’on sait inverser une fonction de répartition F , il est très facile de
simuler une variable aléatoire de fonction de répartition F .
Lemme
Soit U une variable aléatoire qui suit la loi uniforme sur [0, 1], et F une
fonction de répartition bijective de ]a,b[ dans ]0, 1[ d’inverse F −1 . Alors
F −1 (U) est une variable aléatoire de fonction de répartition F .
Proposition
Soit X une variable aléatoire réelle de fonction de répartition F et U une
variable aléatoire uniforme sur ]0, 1[. Alors X et F −1 (U) ont même loi.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES50 / 92
Génération de variables aléatoires
Méthode de simulation par inversion de la fonction
de répartition
Preuve : On pose X = F −1 (U). Cette variable aléatoire prend ses valeurs
dans ]a, b[. Remarquons que nécessairement F est strictement croissante
de ]a, b[ dans ]0, 1[. Soit t ∈]a, b[ :
P(X ≤ t) = P(F −1 (U) ≤ t) = P(U ≤ F (t)) = F (t).
Donc la fonction de répartition de X est bien F .
□
Remarque
L’hypothèse de la connaissance de F −1 n’a de sens que si F est strictement
croissante. Cependant, même dans ce cas, il se peut que F −1 n’ait pas
d’expression analytique simple, c’est le cas par exemple pour la loi normale.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES51 / 92
Génération de variables aléatoires
Méthode de simulation par inversion de la fonction
de répartition
Exemple
(loi exponentielle) : Soit X ∼ E(λ) avec λ > 0. On rappelle que la fonction
de répartition de X est F (x) = 1 − exp(−λx) donc la fonction quantile est
1
∀u ∈]0, 1[, F −1 (u) = − log (1 − u).
λ
1
Donc pour obtenir une réalisation de X il suffit de poser X = − log (U)
λ
avec U ∼ U(]0, 1[) (on rappelle que U et 1 − U ont même loi).
D’où l’algorithme de simulation est
X ←− − log(rand())/λ
Il est inutile de calculer − log(1 − rand)/λ car rand() et 1-rand() suivent
la même loi INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES52 / 92
Génération de variables aléatoires
Méthode de simulation par inversion de la fonction
de répartition
La méthode d’inversion n’est exacte qu‘à condition de connaı̂tre
l’expression explicite de F −1 , comme pour la loi exponentielle. C’est
rarement le le cas.
Si on veut appliquer la méthode à la loi normale par exemple ; il
faudra se donner une table de valeurs de F et procèder par
interpolation linéaire.
On simulera alors une loi dont la fonction de répartition, linéaire par
morceaux, n’est qu’une approximation de la vraie fonction de
répartition.
En plus de l’imprécision, cette méthode présente deux autres
inconvénients. L’un est l’encombrement de la place mémoire, l’autre
est la lenteur due au nombre élevé de texts, même avec une recherche
dichotomique. Même quand on connaı̂t explicitement F −1 , la méthode
d’inversion est rarement la plus efficace pour la variable à densité.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES53 / 92
Génération de variables aléatoires
Méthode de simulation par inversion de la fonction
de répartition : loi discrète
Un choix aléatoire dans un ensemble fini ou dénombrable peut toujours se
ramener à la simulation d’une loi de probabilité sur N (il suffit de
numéroter les éventualités). Nous supposons d’abord que les éventualités
sont des réels rangés par ordre croissant :
{xi , i ∈ {1, . . . , n} ou i ∈ N, xi < xi+1 , ∀i}
Considérons la loi qui charge la valeur xi avec la probabilité pi (i ≥ 1)., La
fonction de répartition correspondante est définie par
0 si x < xi
F (x) =
p1 + . . . + pi = Fi si xi ≤ x < xi+1
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES54 / 92
Génération de variables aléatoires
Méthode de simulation par inversion de la fonction
de répartition : loi discrète
Soit n ∈ N ∗ . Soient x1 < x2 < . . . < xn dans R.
Soient p1 , p2 , . . . , pn ∈ [0, 1] tels que p1 + p2 + . . . + pn = 1.
Soit X une variable aléatoire telle que P(X = xi ) pour tout
i∈ {1, 2, . . . , n}. La fonction de répartition de X est
n
X
F : x ∈ R :7→ pi 1x≥xi
i=1
Son pseudo-inverse est
n
X
F −1 : u ∈ [0, 1] :7→ xj 1p1 +...+pj−1 ≤u<p1 +...+pj
j=1
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES55 / 92
Génération de variables aléatoires
Méthode de simulation par inversion de la fonction
de répartition : loi discrète
Exemple de Fonction de répartition F et Fonction de répartition
inverse F −1 pour n = 3
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES56 / 92
Génération de variables aléatoires
Méthode de simulation par inversion de la fonction
de répartition : loi discrète
L’algorithme de simulation par inversion est l’algorithme naturel de choix
entre différentes éventualités
i ←− 1
choix ←− random
Tant que (choix ≺ Fi ) faire
i ←− i + 1
fin tant que
X ←− xi
Il est inutile de calculer les sommes p1 + . . . + pi à chaque passage dans la
boucle. De même, le nombre de tests de l’algorithme ci-dessus valant i
avec probabilité pi , on aura intérêt à ranger les éventualité par ordre de
probabilité décroissantes. Si le nombre de valeurs est important, il vaudra
mieux utiliser un algorithme de recherche dichotomique, qui sera plus
rapide que la rechercherce séquentielle.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES57 / 92
Génération de variables aléatoires
Méthode de simulation par inversion de la fonction
de répartition : loi discrète
Exemple
Simulation de la loi de Poisson
Si X suit la loi de Poisson de paramètre λ, on a
e −λ λn λ
P(X = n) = = P(X = n − 1)
n! n
Il n’y a pas d’expression simple pour la fonction de répartition et
l’ensemble des valeurs possibles est infini. Il faut donc calculer les valeurs
de Fi , au fur et à mesure.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES58 / 92
Génération de variables aléatoires
Méthode de simulation par inversion de la fonction
de répartition : loi discrète
L’algorithme est le suivant
P ←− e −λ
F ←− P
X ←− 0
Choix ←− Random
Tant que (Choix ≺ F)
X ←− X + 1
P ←− P ⋆ λ/X
F ←− F + P
fin Tant que
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES59 / 92
Génération de variables aléatoires
Méthode de simulation par inversion de la fonction
de répartition
Si on note ϕ(x) la fonction de répartition de la loi normale centrée réduite,
Z x
1 t2
ϕ(x) = √ e − 2 dt,
2π −∞
il n’existe pas de formulation simple de ϕ(x) et encore moins de ϕ−1 (x), la
méthode de la fonction inverse ne peut donc pas s’appliquer directement à
la loi normale. Il existe cependant des polynômes donnant de bonnes
approximations de ϕ(x) et de ϕ−1 (x) qui permettent donc d’appliquer la
méthode de la fonction inverse à la loi normale moyennant cette
approximation.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES60 / 92
Génération de variables aléatoires
Simulation par méthode d’acceptation-rejet
On s’intéresse à la méthode de rejet pour générer des /échantillons de
lois uniformes et de loi à densité par rapport à la mesure de Lebesgue.
La méthode permet également de simuler des lois discrètes
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES61 / 92
Génération de variables aléatoires
Simulation de lois uniformes par méthode de rejet
La méthode de rejet permet de simuler des variables de lois uniformes sur
des boréliens bornés de Rd . Elle est basée sur la proposition suivante.
Proposition
Soit λ la mesure de Lebesgue sur Rd . Soient A et B deux boréliens de Rd ,
tels que
B ⊂ A, 0 < λ(B) ≤ λ(A) < ∞.
Soient (Xn )n≥1 une suite de variables aléatoires i.i.d. de loi uniforme UA
uniforme sur A, et N = inf{n ≥ 1, Xn ∈ B}. Alors,
1 La variable aléatoire T suit la loi géométrique G(p) de paramètre
p = λ(B)/λ(A).
2 Les variables T et XN sont indépendantes.
3 La variable XN suit la loi UB uniforme sur B.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES62 / 92
Génération de variables aléatoires
Simulation de lois uniformes par méthode de rejet
Méthode de simulation de lois uniformes par rejet
Pour simuler une variable Y de loi UB , on commence donc par choisir
un ensemble A tel que B ⊂ A et pour lequel on va savoir simuler des
variables de loi UA (typiquement, A sera un pavé.
On tire ensuite des variables de loi UA ( tant qu’elles n’appartiennent
pas à B.
La première appartenant à B convient pour Y .
Le nombre de tirages à générer pour obtenir une réalisation de Y suit la loi
géométrique G(λ(A)/λ(B)), il faut donc en moyenne λ(A)/λ(B)) tirages
(on a donc tout intérêt à choisir A pas trop ”grand” par rapport à
l’ensemble B de départ).
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES63 / 92
Génération de variables aléatoires
Simulation de lois uniformes par méthode de rejet
Algorithme par rejet
On veut simuler une variable aléatoire X de densité f et de fonction de répartition
F .
Exemple
Commençons par un exemple très simple : comment simuler une loi uniforme sur
le disque unité {x 2 + y 2 ≤ 1} ?
function X=disque
% simule un point uniformement sur le disque unite
X=2⋆ rand(1,2)-[1,1] ;
while (norm(X) ≻ 1),
X=2. ⋆ rand(1,2)-[1,1] ;
end
L’idée est la suivante : on tire des points uniformément dans le carré [0, 1] × [0, 1],
et on les jette jusqu’à en obtenir un qui tombe dans le disque. La loi du point
obtenue est la loi d’un point tiré uniformément dans le carré conditionnellement à
être dans le disque, ce qui est encore la loi uniforme sur leINF274:
disque.
Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG) SIMULATION. DE VARIABLES ALEATOIRES64 / 92
Génération de variables aléatoires
Simulation de lois uniformes par méthode de rejet
Exemples
1 Implémenter le tirage d’un échantillon de loi uniforme sur une ellipse.
On rappelle qu’une équation cartésienne d’une ellipse est donnée par
(x/a)2 + (y /b)2 = 1, où a > 0 et b > 0 sont les longueurs des
demi-axes.
2 Afficher sur une même figure un échantillon obtenu et le tracé de
l’ellipse.
3 Vérifier la loi des grands nombres en calculant la moyenne empirique
du nombre de points tirés appartenant à un rectangle inclu dans
l’ellipse. On rappelle que l’aire à l’intérieur de l’ellipse dont l’équation
est donnée ci-dessus est πab.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES65 / 92
Génération de variables aléatoires
Simulation de lois continues par méthode de rejet
Cas des lois à densité bornée et à support compact
Proposition
Soient f une densité de probabilité sur R, et Df son hypographe :
Df = {(x, u) ∈ R × R+ , 0 < u < f (x)}
Si un vecteur aléatoire (X , U) suit la loi UDf uniforme sur Df , alors X suit
la loi de densité f (et la loi conditionnelle de U sachant ”X = x” est la loi
uniforme U[0,f (x)] .
Ainsi, pour tirer une variable de loi de densité f , il suffit de tirer un point
au hasard sous la courbe représentative de f , et de prendre son abscisse.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES66 / 92
Génération de variables aléatoires
Simulation de lois continues par méthode de rejet
Cas des lois à densité bornée et à support compact
Corollaire
Soit f une densité de probabilité à support compact [a, b] et bornée par
une constante M. Soient (Xn , Un )i≥1 une suite de variables aléatoires i.i.d.
de loi U[a, b]×[0, M] et N = inf{n ≥ 1, Un ≤ f (Xn )} ;. Alors,
1 La variable aléatoire N suit la loi géométrique G(p) de paramètre
p = 1/(M(b − a)).
2 Les variables T et XN sont indépendantes.
3 La variable XN suit la loi de densité f .
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES67 / 92
Génération de variables aléatoires
Simulation de lois continues par méthode de rejet
Méthode de simulation de lois à densités bornés à support compact
par rejet
Pour générer une variable de densité f bornée par M à support
compact [a, b], on simule des variables uniformes sur [a, b] × [0, M]
(qui est le pavé contenant le graphe de f ), jusqu’à ce que l’un des
points tirés appartiennent à l’hypographe de f .
On prend alors pour réalisation de la loi f l’abscisse de ce point.
Exemple
Utiliser la méthode de rejet pour simuler un échantillon de loi de densité
1 p 2
f (x) = 4σ − x 2 1[−2σ, 2σ] (x).
2πσ 2
Cette loi, dite loi du demi-cercle de Wigner, est la loi limite universelle
pour le spectre de matrices aléatoires symétriques
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES68 / 92
Génération de variables aléatoires
Algorithme par rejet
Remarque
Quelle est la loi du nombre N de passages dans la boucle ?
Lemme
Soit X une variable aléatoire de densité f (sur R)à simuler. On suppose
qu’il existe une constante k > 0 et une densité g (sur R aussi, facile à
simuler) tels que
∀x f (x) ≤ kg (x)
Soit U une variable aléatoire de loi uniforme sur [0, 1] et Z une variable
aléatoire, indépendante de U, de densité g . On pose V = kUg (Z ). Alors,
la loi de Z conditionnellementà l’événement {V < f (Z )} a pour densité f .
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES69 / 92
Génération de variables aléatoires
Algorithme par rejet
Remarque
Notons que nécessairement k ≥ 1 (car f , g sont des densités).
Remarque
Il est très important de noter qu’on doit choisir la constante k la plus
petite possible pour minimiser le nombre de rejets : plus la majoration est
grossière, plus il faut des tirages pour obtenir une valeur acceptable.
f (z)
Preuve Notons que pour tout z ∈ R, kg (z) ≤ 1. On a tout d’abord
P(V < f (Z )) = P(kUg (Z) < f (Z )),
R R1
= R g (z) 0 1{kug (z)<f (z)} du dz,
R f (z)
= R g (z) dz,
kg (z)
1
= .
k INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES70 / 92
Génération de variables aléatoires
Algorithme par rejet
Evaluons ensuite
Rt R
1
P({Z ≤ t} ∩ {V < f (Z )}) = −∞ g (z) 0 1{kug (z)<f (z)} du dz,
Rt f (z)
= −∞ g (z) kg (z) dz,
Z t
1
= f (z)dz.
k −∞
Rt
Ce qui montre que P({Z ≤ t} ∩ {V < f (Z )}) = displaystyle k1 −∞ f (z)dz,
donc la loi conditionnelle de Z sachant que {V < f (Z )} a bien pour
densité f . Ce résutltat se généraliseà Rd .
□
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES71 / 92
Génération de variables aléatoires
Algorithme par rejet
On obtient donc l’algorithme de simulation par rejet (on suppose qu’on
possède une fonction simulg qui simule une variable aléatoire de densité
g) :
Algorithme :
function z=simulf
% simule par rejet une va de densite f
u=rand() ;
z=simulg ;
v=k*u*g(z) ;
while (v≥ f(z)) ;
u=rand() ;
z=simulg ;
v=k*u*g(z) ;
end
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES72 / 92
Génération de variables aléatoires
Algorithme par rejet
Notons N le nombre de tests fait lors de cette fonction. N est une variable
aléatoire, àvaleurs dans N∗ . Notons (Un )n≥1 la suite des appels àl a
fonction rand(), et (Zn )n≥1 la suite des appels à la fonction simulg.
Toutes ces variables aléatoires sont indépendantes, les premières de loi
uniforme sur [0, 1], les secondes de densité g . On note Vn = kUn g (Zn ), et
on note X la sortie de la fonction.
Soit t ∈ R. Evaluons
1 t
Z
P(X ≤ t et N = 1) = P(V1 < f (Z1 ) et Z1 ≤ t) = f (z)dz.
k −∞
par la démonstration précédente. Soit maintenant i ≥ 2. Par
indépendance, et comme précédemment :
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES73 / 92
Génération de variables aléatoires
Algorithme par rejet
P(X ≤ t et N = i)
= P(V1 ≥ f (Z1 ), V2 ≥ f (Z2 ), . . . , Vi−1 f (Zi−1 ), Vi < f (Zi , Z
= P(V1 ≥ f (Z1 ))P(V2 ≥ f (Z2 )), . . . , P(Vi−1 f (Zi−1 ))P(Vi <
i−1 Z t
1 1
= 1− f (z)dz
k k −∞
Finalement (rappelons que k ≥ 1) :
+∞
P
P(X ≤ t) = P(X ≤ t et N = i),
i=1
+∞
i−1 Z t
P 1 1
= 1− f (z)dz
i=1 k k −∞
Rt
= −∞
f (z)dz
donc la densité de X est bien f . INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES74 / 92 □
Génération de variables aléatoires
Simulation par composition
Exemple
Soit F et G deux fonctions de répartition sur R. On construit une variable
aléatoire X de la façon suivante : on lance une pièce qui tombe sur pile
avec probabilité 1/3 et sur face avec probabilité 2/3, si pile sort, on tire un
nombre au hasard suivant la loi donnée par F , sinon, on tire un nombre au
hasard suivant la loi donnée par G . Déterminer la fonction de répartition H
de X .
L’exemple précédent est un exemple de mélange de variables aléatoires. On
suppose main- tenant qu’on veut simuler une variable aléatoire X de
Pn
fonction de répartition F = θi Fi , où les θi sont des poids : θi ≥ 0 et
i=1
n
P
θi = 1 et les Fi sont des fonctions de répartition dont les lois sont
i=1
faciles à simuler. On suppose qu’on a à notre disposition des fonctions
simulFi qui simulent des variables aléatoires de fonction de répartition Fi
et uneBOWONG
Samuel fonction simulTheta
( Samuel BOWONG) qui simule
SIMULATION. DE VARIABLES variable75INF274:
une ALEATOIRES Simulation des processus aléatoiire
aléatoire
/ 92 Θ àvaleur
Génération de variables aléatoires
Simulation par composition
function x = melange
% simulation par melange
i=simulTheta ;
x=simulFi ;
end
Cette méthode se généralise immédiatementà un nombre infini
dénombrable de poids (θi )i∈N , et même àun mélange ”continu” de lois :
on suppose
R qu’on veut simuler une variable aléatoire X de densité
f (z) = Θ g (θ)fθ (z)dθ, où g est une densité de probabilité, ainsi que Θ
tous les fθ . L’algorithme est alors simple : on tire θ suivant g , puis x
suivant fθ .
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES76 / 92
Génération de variables aléatoires
Simulation de vecteurs aléatoires : Cas indépendant
Supposons qu’on souhaite simuler Z un vecteur aléatoire de Rd . Si ses
composantes sont indépendantes, on est ramené au cas de la simulation de
variables aléatoires réelles ind épendantes traité dans les sections
précédentes (on rappelle que les sorties successives de rand donnent des
variables aléatoires indépendantes de loi uniforme sur [0, 1]). Le problème
est différent quand les coordonnées ne sont pas indépendantes.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES77 / 92
Génération de variables aléatoires
Simulation de vecteurs aléatoires : Vecteur gaussien
Un vecteur gaussien dans Rd est caractérisé par un vecteur moyenne m ∈ Rd , et
une matrice de covariance K , de taille d × d, symétrique et positive. On suppose
pour l’instant que K est définie positive.
Théorème
(Décomposition de Cholesky). Si K est une matrice symétrique définie positive de
taille d × d, il existe au moins une matrice réelle triangulaire inférieure L telle que :
K = Lt L
On peut également imposer que les éléments diagonaux de la matrice L soient
tous strictement positifs, et la factorisation correspondante est alors unique.
En pratique on cherche L par coefficients indéterminés et identification, colonne
par colonne.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES78 / 92
Génération de variables aléatoires
Simulation de vecteurs aléatoires : Vecteur gaussien
Remarque
Si K est seulement semi-définie positive, la décomposition de Cholesky
existe encore mais elle n’est plus unique.
Lemme
Soit T un vecteur gaussien de dimension d, centré et de matrice de
covariance Id (dont les coordonnées sont des variables aléatoires i.i.d.
normales centrées réduites). Soit m ∈ Rd et K une matrice définie positive
de taille d × d. Soit L la matrice triangulaire inférieure donnée par la
factorisation de Cholesky de K .
Alors le vecteur aléatoire Z = m + LT est un vecteur gaussien de moyenne
m et de matrice de covariance K .
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES79 / 92
Génération de variables aléatoires
Simulation de vecteurs aléatoires : Vecteur gaussien
Preuve Comme L est une application linéaire de R d dans R d , Z est
encore un vecteur gaussien d-dimensionnel. Pour l’espérance :
E(Z ) = E(m + LT ) = m + LE(T ) = m,
puisque T est centré. Pour la matrice de covariance, comme celle de T est
Id ,
E((Z − m)t (Z − m)) = E(LT t T t L) = LE(T t T )t L = LIdt L = Lt L = K .
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES80 / 92
Génération de variables aléatoires
Simulation de vecteurs aléatoires : Vecteur gaussien
Exemple
On veut simuler le vecteur gaussien Z de R3 de moyenne m et de matrice
de covariance K avec
1 1 −1 0
m = −2 et K = −1 5 6
4 0 6 10
On commence par chercher la matrice de factorisation de Cholesky L par
coefficients indéterminés et identification :
l11 0 0
L = l12 l22 0
l31 l32 l33
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES81 / 92
Génération de variables aléatoires
Simulation de vecteurs aléatoires : Vecteur gaussien
On calcule LLt et on identifie, colonne par colonne :
2 =k
1 l11 11 = 1 ⇒ l11 = 1
2 l11 l21 = k21 = −1 ⇒ l21 = −1
3 l11 l31 = k31 = 0 ⇒ l31 = 0
2 + l2 = k
4 l21 22 22 = 5 ⇒ l22 = 2
5 l21 l31 + l22 l32 = k32 = 6 ⇒ l32 = 3.
2 + l2 + l2 = k
6 l31 32 33 33 = 1 ⇒ l33 = 1.
Donc
1 1 0 0
Z = −2 + −1 2 0 T
4 0 3 1
où T est un vecteur gaussien de R3 dont les trois composantes sont i.i.d.
centrées réduites.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES82 / 92
Génération de variables aléatoires
Simulation de vecteurs aléatoires : Cas général
1 Le cas d’une v.a. discrète à valeurs dans Rd se traite comme celui
d’une variable aléatoire réelle discrète.
2 La méthode de rejet a été présentée dans la cas d’une variable
aléatoire à valeurs dans Rd .
3 On peut encore utiliser les lois conditionnelles. Nous allons illustrer
cette méthode, dite méthode récurrente, par un exemple :
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES83 / 92
Génération de variables aléatoires
Simulation de vecteurs aléatoires : Cas général
Exemple
On veut simuler un vecteur (X , Y ) de loi uniforme sur le triangle ABC
avec A = (0, 0), B = (1, 1) et C = (0, 1).
On commence par déterminer la densité de cette loi :
f (x, y ) = 210≤x≤1 10≤y ≤1 1x≤y
On peut alors calculer la densité de X
fX (x) = 2(1 − x)10≤x≤1
: puis la densité de la loi conditionnelle de Y sachant X
1
fY |X (y | x) = 1x≤y ≤1
1−x
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES84 / 92
Génération de variables aléatoires
Simulation de vecteurs aléatoires : Cas général
Pour la simulation, on procède maintenant de la façon suivante : on simule
X suivant sa densité (en utilisant par exemple la méthode de la fonction
de répartition), on obtient une valeur x, puis on simule Y suivant la
1
densité 1x≤y ≤1 (on reconnaı̂t par exemple 1 − x une loi usuelle).
1−x
Remarque
Remarquons que la seconde étape ressemble beaucoup à la simulation par
mélange.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES85 / 92
Génération de variables aléatoires
Simulation de variables aléatoires
Dans tout ce qui suit U note une v.a. de loi uniforme sur [0, 1] et (Un )n≥1
une suite de v.a. i.i.d., avec U1 de loi uniforme sur [0, 1].
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES86 / 92
Génération de variables aléatoires
Exercices
Exercice
Ecrire des fonctions permettant de simuler des n-échantillons de variables
aléatoires dont les lois sont les suivantes :
1 Loi de Possion P(λ), λ > 0.
2 Loi géométrique G(p), p ∈ [0, 1]
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES87 / 92
Génération de variables aléatoires
Exercices
Exercice
Soit X une variable aléatoire de loi normale de moyenne µ et variance σ 2 .
Simuler cette variable aléatoire en utilisant la méthode de Box-Muller.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES88 / 92
Génération de variables aléatoires
Exercices
Exercice
En utilisant la méthode de la fonction de répartition, simuler une loi de
Cauchy. Soit X une variable aléatoire de loi de Cauchy de paramètre a > 0
a
f (x) = , x ∈R
π(x 2 + a2 )
Vérfier que f est une densité.
Calculer sa fonction de répartition F .
En déduire G l’inverse de la fonction F .
Soit U une variable aléatoire de loi uniforme sur [0, 1]. En utilisant la
périodicité de la fonction tan, montrer que
1
tan π U − = tan(πU) en loi
2
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES89 / 92
Génération de variables aléatoires
Exercices
Ecrire un algorithme pour simuler une variable aléatoire de loi de
Cauchy de paramètre a.
Donner des réalisations de votre code Matlab pour a = 10 et a = 1 (4
valeurs numériques pour chaque choix de a).
Tracer la vraie densité et un histogramme à l’aide de cet algorithme
pour a = 10 et a = 1. Utiliser un échantillon de taille 10000.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES90 / 92
Génération de variables aléatoires
Exercices
Exercice
Simulation de la gaussienne par rejet par rapport à la double exponentielle.
On pose
2
1 z 1
f (z) = √ exp − et g (z) = exp(−|z|)
2π 2 2
Montrer que g est bien une densité sur R.
Déterminer une constante k satisfaisant ∀z ∈ R, f (z) r≤ kg (z). On
2e
aura intérêt à prendre k la plus petite possible : [k = = 1, 3155].
π
Ecrire un algorithme de simulation d’une loi gaussienne centerée
réduite par rejet.
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES91 / 92
Génération de variables aléatoires
Exercices
Exercice
Simuler un mélange d’exponentielles
F (x) = α(1 − exp(−αx)) + (1 − α)(1 − exp(−bx)), avec α ∈ [0, 1].
INF274: Simulation des processus aléatoiire
Samuel BOWONG ( Samuel BOWONG)
SIMULATION. DE VARIABLES ALEATOIRES92 / 92