Simulation
Simulation
A. Buys
Département d’Informatique
Université de Mons
Intro Loi uniforme Tests Loi non uniforme
1 Introduction
5 Divers
Un nombre aléatoire n'existe pas (3 est aléatoire ? Non). C'est en fait une variable aléatoire. Bien
distinguer car discret et continu.
Introduction Equiprobable : La proba entre a et b est b - a ?
Uniforme :
Référence: Donald E. Knuth “The Art of Computer programming” (Addison Wesley), Vol. 2.
(...)
Rb
Calcul de a
f (x)dx
(...)
Physique (interactions entre particules, efficacité d’un détecteur, etc)
Echantillonnage (sondage, ...)
Programmation (tests de programme)
Génération de mots de passe
Prise de décision (avec facteurs non quantifiables)
Jeux (débuts de partie)
A démontrer
∃ n tel que Xn = X2n et µ ≤ n ≤ µ + λ
(r − n) multiple de λ
Xr = Xn (r ≥ n) ⇐⇒
n≥µ
⇓
n multiple de λ
X2n = Xn ⇐⇒
n≥µ
⇓
Le plus petit multiple n de λ (n ≥ µ) est tel que Xn = X2n
Or, entre µ et µ + λ, il existe un multiple de λ. Si on part de X0 , c’est
le premier qu’on va rencontrer (pas d’égalité avant µ).
On utilise le modulo pour être sûr d'avoir des valeurs en dessous d'un certain nombre
(Par l’absurde)
Si µ 6= 0, ∃ Xµ précédé de Xµ−1 et ∃ α tel qu’on trouve dans la
séquence ... Xα Xµ ... avec Xα 6= Xµ−1 .
On va montrer qu’on ne peut pas avoir un nombre avec deux
prédécesseurs différents si a et m sont premiers entre eux.
A démontrer
ak −1
Xk+n = (ak Xn + a−1 c) mod m
(Par récurrence)
k = 1 évident
ak −1
Xk+n+1 = a(ak Xn + a−1 c) + c mod m
k+1 ak+1 −a
=a Xn + ( a−1 + 1)c mod m
k+1
=a k+1
Xn + ( a −a+a−1
a−1 )c mod m
CQFD.
Choix du module m
m limite la période qu’on peut obtenir
Exemple extrême : simulation de pile ou face avec m=2.
On a intérêt à choisir m grand
Rapidité de calcul
Xn+1 = (aXn + c) mod m ; On choisit 0 ≤ a, c ≤ m − 1
Lors du calcul, le plus grand nombre est de
(m − 1)(m − 1) + m − 1 = m2 − m < m2
On prend m = 2e où e est le nombre de bits d’un mot d’ordinateur
m2 est représenté par 2e bits et la division par m est un décalage de e
positions.
=⇒ Pas de division à effectuer, maximalisation de la période.
A démontrer
Soit d qui divise m, Yi = Xi mod d, alors Yn+1 = (a0 Yn + c 0 ) mod d
avec a0 = a mod d, c 0 = c mod d
Xn+1 = aXn + c − qm
Yn+1 = ((a0 + αd)(Yn + βd) + c 0 + γd) mod d
Yn+1 = (a0 Yn + c 0 + (...)d) mod d
Choix de a et c
Théorème
(Hull et Dobel, 1962)
La congruence définie par m, c, a et X0 est de période m si et seulement si
- c est premier avec m
- b = a − 1 est multiple de p, ∀p premier diviseur de m
- b est multiple de 4 si 4 divise m
Autres méthodes
Comment obtenir une période > m ?
e = 2.71828182845904523536028747135266249...
π = 3.14159265358979323846264338327950288...
“The Quest for Pi”, David H. Bailey, Jonathan M. Borwein, Peter B. Borwein and Simon Plouffe,
June 25, 1996, Mathematical Intelligencer, vol. 19 , no. 1 (Jan. 1997), pp. 50–57
[Link]
Rappel d’analyse
Rappels de théorie des probabilités (et statistique)
Test du χ2
Test de Kolmogorov-Smirnov
Test du gap
Test du poker
Test du collectionneur de coupons
Test de permutation
Méthode des “runs”
Test du maximum
Rappel d’analyse
alors Z Z Z Z
g (x, y )dx dy = g (F (u, v )) |detJF | du dv
Soit
coordonnées polaires
∂x ∂x
x = r cos θ ∂r ∂θ cos θ −r sin θ
→ JF = =
y = r sin θ ∂y ∂y sin θ r cos θ
∂r ∂θ
et det JF = r .
Donc
Z +∞ Z +∞ Z +∞ Z 2π
g (x, y )dx dy = g (F (r , θ)) r dr dθ
−∞ −∞ 0 0
Z +∞ 2 Z +∞ Z +∞
x2 x 2 +y 2
e − 2 dx = e− 2 dx dy
−∞ −∞ −∞
Z +∞ Z 2π
r2
= e − 2 r dr dθ
0 0
Z +∞
r2
= 2π e − 2 r dr
0
h r2
i+∞
= 2π −e − 2 = 2π
0
Changement de variables : Y = g (X )
Z +∞
fY (y ) = δ(y − g (x)) fX (x) dx
−∞
P δ(x−xi )
Au sens des fonctionnelles, δ(g (x)) = i |g 0 (xi )| où g (xi ) = 0 et
g 0 (xi ) 6= 0.
χ2 à 1 degré de liberté.
Z +∞ Z +∞
1 2 /2 2 /2
W (t) = dx dy e −x e −y δ(t − x 2 − y 2 )
2π −∞ −∞
1 n p p o
δ(t − x 2 − y 2 ) = p δ(x − t − y 2 ) + δ(x + t − y 2 )
2 t − y2
√ 2
+ t
e −y /2 +∞
Z Z
1 2 /2
W (t) = √ dy p dx e −x {...}
2π − t 2 t − y2 −∞
Z + √t 2
1 e −y /2 2 2
= √ dy p (e −(t−y )/2 + e −(t−y )/2 )
2π − t 2 t − y2
√
Z + t
1 −t/2 dy
= e √ p
2π − t t − y2
A. Buys (Dpt Informatique) Simulation sur ordinateur 30 / 110
Intro Loi uniforme Tests Loi non uniforme
√
Z + t
1 −t/2 dy
W (t) = e √ p
2π − t t − y2
Z +1
1 −t/2 1 y
= e q d( √ )
2π −1 1 − ( √yt )2 t
1 −t/2 +1
Z
dx
= e √
2π −1 1 − x2
Z +1
1 −t/2 dx
= e √
π 0 1 − x2
Z +1
1 −t/2 1 π
= e d(arcsinx) = e −t/2
π 0 π 2
1 −t/2
= e
2
χ2 à 2 degrés de liberté.
A. Buys (Dpt Informatique) Simulation sur ordinateur 31 / 110
Intro Loi uniforme Tests Loi non uniforme
médiane = n - 2/3
(au sens des fonctionnelles, Θ0 (x) = δ(x))
Pour χ2n , E (X ) = n, σ 2 (X ) = 2n
Probabilité conditionnelle
P(A ∩ B)
P(A|B) =
P(B)
P(x ≥ t + h ∩ x ≥ t)
P(x ≥ t + h|x ≥ t) =
P(x ≥ t)
P(x ≥ t + h)
=
P(x ≥ t)
e −λ(t+h)
= = e −λh
e −λt
= P(x ≥ h)
P(A|Bi )P(Bi )
P(Bi |A) = P
j P(A|Bj )P(Bj )
Test du χ2
On crée un histogramme (r intervalles) en comptant le nombre de
valeurs générées dans chaque intervalle (ni ).
On s’attend à avoir “à peu près” le même nombre de points dans
chaque intervalle (probabilités pi égales).
On construit
r
(ni − ( rj=1 nj )pi )2 Xr
ni − Npi 2
P
X
Kr = = √
( rj=1 nj )pi
P
i=1
Npi i=1
Pr
Dans l’exemple, r = 10, N = j=1 nj = 1000, pi = 0.1, Kr = 17.72
La distribution des effectifs ni suit une loi multinomiale
Pr :
N! n1 nr si
P(X1 = n1 , ..., Xr = nr ) = n1 !...n p
r! 1
...p r j=1 n j = N, 0 sinon.
i −Npi
√ 2
X√
−→ N(0, 1 − pi ), ri=1 X√i −Np −→ χ2r −1
P i
Np i N→∞ Np i loi
Les Npi sont des variances poissonniennes.
On obtient unePloi de χ2 à r − 1 degrés de liberté (on a une
contrainte sur rj=1 nj ).
On se donne une probabilité α telle que l’hypothèse examinée est
2
rejetée si elle a une probabilité P χ ≥ valeur obtenue < α de se
produire (voir table).
A. Buys (Dpt Informatique) Simulation sur ordinateur 38 / 110
Intro Loi uniforme Tests Loi non uniforme
Test de Kolmogorov-Smirnov
On compare les fonctions de répartition des distributions
Z x
F (x) = f (y ) dy = P {X ≤ x}
−∞
Théorème
(Kolmogorov-Smirnov)
√ P+∞ 2 2
P nDn < x −→ K (x) = k=−∞ (−1)k e −2k n (x > 0)
n→∞
Comme précédemment, on utilisera une valeur critique α:
P {Dn > Dα } = α
ou bien, de façon équivalente,
√ √
P nDn > nDα = α
Test du poker
On joue avec k = 5 dés à d = 6 faces.
5 faces identiques : poker
4 faces identiques : carré
3 + 2 faces identiques : full
3 faces identiques : brelan
2 + 2 faces identiques : double paire
2 faces identiques : paire
On divise [0, 1[ en d = 6 intervalles, 5 nombres dans le même intervalle
donnent un poker, etc ... et, pour simplifier
Poker → une seule case
Carré ou full → 2 cases différentes
Brelan ou double paire → 3 cases différentes
Paire → 4 cases différentes
Rien (ici) → 5 cases différentes
Soit r le nombre de cases différentes, on peut calculer la probabilité Pr
d’une de ces configurations.
avec
k k
= =1
1 k
k \r 1 2 3 4 5
1 1
2 1 1
3 1 3 1
4 1 7 6 1
5 1 15 25 10 1
Jusque là, on distingue les objets mais pas les paquets (indiscernables).
Il faut encore affecter les intervalles aux paquets.
Par exemple, on a une paire, on vient de distinguer qu’elle était formée
du dé no 1 et du dé no 5 mais on ne sait pas encore si c’est une paire
d’as ou de valets.
A. Buys (Dpt Informatique) Simulation sur ordinateur 48 / 110
Intro Loi uniforme Tests Loi non uniforme
triplets = 3! permutations
6-uples = 6! = 720
Test de permutation
Pour un k-tuple X1 , X2 , ..., Xk , on va regarder l’ordre relatif des
nombres par rapport à une séquence triée (on suppose qu’on n’a pas
deux fois le même nombre dans le k-tuple).
On a k! permutations possibles et on s’attend à ce qu’elles soient
également représentées.
Exemple (k=3):
0.1 0.3 0.2 1 3 2
0.4 0.5 0.6 =⇒ 1 2 3
0.05 0.01 0.99 2 1 3
On veut un compteur pour chacune des k! permutations.
A chaque permutation 1 5 6 3 4 2 , on va faire correspondre un
nombre 0 ≤ f ≤ 6! (de façon générale k!)
On numérote les positions de 0 à 5 (0 à k − 1):
0 1 2 3 4 5
1 5 6 3 4 2
0 1 2 3 4 5
1 5 6 3 4 2 0
2 5 6 3 4 1 0
4 5 6 3 2 1 3
4 5 6 3 2 1 0
6 5 4 3 2 1 1
6 5 4 3 2 1 0 d'office un 0 pour le dernier
0 ≤ b2 = 0 ≤ k − 2
0 ≤ b3 = 3 ≤ k − 3
0 ≤ b4 = 0 ...
0 ≤ b5 = 1
0 ≤ b6 = 0
b1 → ?1
b2 → ?k
b3 → ?k(k − 1)
b4 → ?k(k − 1)(k − 2)
...
bk → ?k! bk = 0
Pour 1 < i ≤ n − p + 1, on a
n! n!p
{...} = p=
(p + 1)!(n − p − 1)! (p + 1)!
(l’ordre relatif dans le run est sans importance)
(i − 1 ne peut pas être le plus petit des p + 1, p possibilités)
Cas (i = 1)
n!
{...} =
p!
n
1 X X (perm) (perm)
cov (Rp0 , Rq0 ) = Zpi Zqj − R 0p R 0q
n!
(perm) i,j=1
Pn
cov (Rp0 , Rq0 ) = 1
n! i,j=1 { nombre de permutations pour lesquelles commencent en i un run de
longueur ≥ p et en j un de longueur ≥ q } −R 0 p R 0 q
et après avoir distingué les différents cas où les runs sont contigus
(j = i + p) ou disjoints, on obtient :
0
0 0 Rt + f (p, q, n) (p + q ≤ n)
cov (Rp , Rq ) =
Rt0 − R 0 p R 0 q (p + q > n)
où t = max(p, q), s = p + q et
s(1 − pq) + pq 2s s −1
f (p, q, n) = (n + 1) − +2
(p + 1)!(q + 1)! (s + 1)! s!
(s 2 − s − 2)pq − s 2 − p 2 q 2 + 1
+
(p + 1)!(q + 1)!
Si des classes sont trop peu remplies, on peut les grouper (par exemple,
1, 2, 3, 4, 5, ≥ 6)
Neutraliser le nombre qui suit un run ? (indépendance ?)
A. Buys (Dpt Informatique) Simulation sur ordinateur 60 / 110
Intro Loi uniforme Tests Loi non uniforme
Test du maximum
Pour un k-tuple X1 , X2 , ..., Xk , soit Y = max(X1 , X2 , ..., Xk )
Acceptance - Rejet
Fonction de répartition
Pj 0 0 4 8 1 7 1 1 1 7 7 8 4 0 0 0
9 9 9 9 9 9 9
Yj 5 9 7 4 ? 6 ? ? ? 8 4 7 10 6 7 8
* si valeur qui n'a
On génère U dans [0, 1[, K = [kU], V = kU − K . pas d'impact
Soit N le nombre à générer Partie non entière
1 j ←K
2 Si V ≤ Pj alors N ← j, sinon N ← Yj
Pj 0 0 4 8 1 7 1 1 1 7 7 8 4 0 0 0
9 9 9 9 9 9 9
Yj 5 9 7 4 ? 6 ? ? ? 8 4 7 10 6 7 8
On s’arrange pour n’avoir que 2 morceaux par colonne (2 tableaux).
On part d’une colonne sous la barre et on égalise avec une colonne
A. Buys
au-dessus, même si onSimulation
(Dpt Informatique)
prend de trop, et ainsi de suite.
sur ordinateur 66 / 110
Intro Loi uniforme Tests Loi non uniforme
Acceptance - Rejet
Même principe que pour une loi discrète.
Si la loi est définie sur (0, +∞), peu efficace pour la queue de la
distribution.
P1 + P2 + P3 + P4 = 1
On génère un abscisse en fonction des Pi (on suppose connaı̂tre
l’intégrale sur chaque intervalle), ce qui donne un intervalle.
Dans cet intervalle, on génère des points jusqu’au moment où on en
accepte un.
A priori, les taux d’acceptance dépendent de l’intervalle.
A n’utiliser que si on ne peut pas faire autrement.
Ry Ry
F (y ) = −∞ f (x) dx = 0 f (x) dx est strictement croissante.
On génère z dans [0, 1[ et on a alors z = F (y ) =⇒ y = F −1 (z).
En effet, F (y ) = P {Y ≤ y } = P {Z ≤ z} = z
δ(x − G −1 (y ))
Z Z
hY (y ) = dx fX (x)δ(y − G (x)) = dx fX (x) 0
|G (x)|x=G −1 (y )
Or G (G −1 (y )) = y =⇒ G 0 (x)|x=G −1 (y ) d
dy G
−1
(y ) =1
Z
d −1 d
hY (y ) = dx fX (x)δ(x −G −1 (y )) G (y ) = fX (G −1 (y )) G −1 (y )
dy dy
−αx
f (x) = αe densité
Z y
y
F (y ) = f (x)dx = −e −αx 0
= 1 − e −αy = z
0
1
−αy = ln(1 − z) =⇒ y = − ln(1 − z)
α
On peut donc prendre y = − α1 ln z 6 0).
(z =
Lien avec la loi de Poisson Prend bcp de temps de calcul
k
Pk = λk! e −λ
On veut étudier le nombre d’appels téléphoniques (ou le nombre de
voitures qui passent dans la rue) dans un intervalle de temps ]0, t].
On va faire les hypothèses suivantes :
1 Le nombre d’appels dans ]t, t + h] est indépendant de ]0, t] et ne
dépend que de h.
2 La probabilité d’avoir un appel dans ]t, t + h] est de la forme
αh + O(h).
3 La probabilité d’avoir plusieurs appels dans ]t, t + h] est de la forme
O(h) (rare).
A. Buys (Dpt Informatique) Simulation sur ordinateur 71 / 110
Intro Loi uniforme Tests Loi non uniforme
En résumé
1 appel : αh + O(h)
≥ 2 appels : O(h)
0 appel : 1 − αh + O(h)
Soit Pn (t + h) la probabilité d’avoir n appels dans ]0, t + h], on peut la
décomposer en
n − 1 appels dans ]0, t] et 1 appel dans ]t, t + h] (1)
n appels dans ]0, t] et 0 appel dans ]t, t + h] (2)
k appels dans ]0, t] et n − k ≥ 2 appels dans ]t, t + h] (3)
P(1) = Pn−1 (t).[αh + O(h)]
P(2) = Pn (t).[1 − αh + O(h)]
P(3) = Pk (t).O(h)
Pn (t + h) = αh Pn−1 (t) + (1 − αh) Pn (t) + O(h)
Pn (t + h) − Pn (t) = αh (Pn−1 (t) − Pn (t)) + O(h)
Pn0 (t) = α (Pn−1 (t) − Pn (t))
Pour n = 0, P0 (t + h) − P0 (t) = −αh P0 (t) + O(h) et
P00 (t) = −αP0 (t) =⇒ P0 (t) = Ce −αt
(αt)n −αt
A retenir Pn (t) = e
n!
∞
X
C= Pn (t) = 1
0
Pn−1 Pn
− α1 i=1 ln zi ≤ tα < − α1 i=1 ln zi
Pn Pn−1
i=1 ln zi < −αtα ≤ i=1 ln zi
Qn Qn−1
i=1 zi < e −αtα ≤ i=1 zi
−αtα
Ceci revient à calculer
Qn = e et à générer des zi suivant une loi
uniforme tant que i=1 zi > .
1 Z ← 1; N ← 0
2 Z ← Z ? zi ; N ← N + 1
3 Si Z ≥ , aller en (2)
4 k ←N −1
0
Loi de probabilité
√ de R 2 2
P(R ≤ r ) = P( −2 ln S ≤ r ) = P(S ≥ e −r /2 ) = 1 − e −r /2
0
2
D’où la densité fR 0 (r ) = r e −r /2
Z
1 2
P(X1 ≤ x1 ∧ X2 ≤ x2 ) = dθdr r e −r /2
r cos θ≤x1 ∧r sin θ≤x2 2π
X12 +X22
Z
1
= dX1 dX2 e − 2
2π X1 ≤x1 ∧X2 ≤x2
Z x1 X12
Z x2 X22
1 1
= √ dX1 e − 2 √ dX2 e − 2
2π −∞ 2π −∞
Méthode paire-impaire
Soit
C e −h(x) si a ≤ x ≤ b
f (x) =
0 sinon
avec 0 ≤ h(x) ≤ 1 si a ≤ x ≤ b.
1 U uniforme dans [0, 1[, X = a + (b − a)U uniforme sur [a, b[.
2 V0 ← h(X ).
3 Générer V1 , V2 , V3 , ... uniformes dans [0, 1[ aussi longtemps que
Vi−1 ≥ Vi .
4 Si i est pair, retourner en (1), sinon, accepter X .
∞ ∞
( )
k−1 k
X X [h(X )] [h(X )]
k= k P(k) = k −
(k − 1)! k!
k=1 k=1
∞ k ∞ k
X [h(X )] X [h(X )]
= (k + 1) − k
k! k!
k=0 k=1
∞ k
X [h(X )]
= + 0 = e h(X ) ≤ e
k!
k=0
j dj aj j dj aj
1 0.674489750 0.674489750 16 0.155349717 4.324919039
2 0.475859630 1.150349380 17 0.150409384 4.475328423
3 0.383771164 1.534120544 18 0.145902577 4.621231000
4 0.328611323 1.862731867 19 0.141770033 4.763001033
5 0.291142827 2.153874694 20 0.137963174 4.900964207
6 0.263684322 2.417559016 21 0.134441762 5.035405969
7 0.242508452 2.660067468 22 0.131172150 5.166578119
8 0.225567444 2.885634912 23 0.128125965 5.294704084
9 0.211634166 3.097269078 24 0.125279090 5.419983174
10 0.199924267 3.297193345 25 0.122610883 5.542594057
11 0.189910758 3.487104103 26 0.120103560 5.662697617
12 0.181225181 3.668329284 27 0.117741707 5.780439324
13 0.173601400 3.841930684 28 0.115511892 5.895951216
14 0.166841909 4.008772593 29 0.113402349 6.009353565
15 0.160796729 4.169569322 30 0.111402720 6.120756285
t 2 −aj2
Soit, pour aj ≤ t ≤ aj+1 , h(t) = 2
t 2 −a2
h(t) = 2 j est-elle une bonne fonction pour la méthode
paire-impaire, i.e. h(t) ≤ 1 sur tout l’intervalle ?
Il faut montrer que sur tout l’intervalle t 2 − aj2 ≤ 2 ou encore que
2
aj+1 − aj2 ≤ 2
x 2 R +∞ t2
Considérons la fonction m(x) = e 2 x e − 2 dt
+∞ t2 +∞ Z +∞ t2
e− 2 −t e − 2
Z
1 − t2
dt = − e 2 − dt
x t2 t x x −t
x2 Z +∞
e− 2 t2
= − e − 2 dt
x x
+∞ t2
e− 2
Z
x2 1
e 2 dt = − m(x)
x t2 x
Z +∞ − t 2
1 x2 e 2 1
Donc m(x) = −e 2 dt <
x x t2 x
Posons x = aj .
r Z +∞ r r Z +∞
2 2
− t2 1 2 − aj2 11 2 t2
e dt < e 2 m(aj ) = j
= e − 2 dt
π y 2 π 22 π aj+1
Algorithme
1 Générer un nombre aléatoire suivant la loi uniforme
U = (b0 , b1 , b2 , ...bn ) (en binaire).
2 B ← b0 , j ← 1, a ← 0.
3 Si bj = 1, a ← a + dj , j ← j + 1. Si j < n + 1, répéter (3).
4 (On arrive en j avec une probabilité 2−j ).
On va générer x dans [aj−1 , aj [ avec
h(x) = x 2 − a2 = y 2 + 2 a y (y = x − a).
5 Générer Y dans [0, dj [, V ← ( 21 Y + a)Y
(On peut prendre Y = dj .(bj+1 , ..., bn ))
6 Générer U dans [0, 1[. Si U > V , aller en (7), sinon (on continue la
séquence) regénérer V dans [0, 1[.
Si U < V (cas pair), aller en (5), sinon répéter (6).
7 X ← a + Y . Si B = 1, X ← −X .
Rx
−∞
f (t)dt = rapport des
surfaces (surface
turquoise/surface colorée).
A démontrer
La courbe voulue est définie par u 2 = f ( vu ) ou u = f ( vu ).
p
Dénominateur : u > 0, u 2 ≤ f ( vu ).
Soit v = tu, dv = udt,
Z Z Z +∞ Z √f (t)
u>0 du dv = u du dt = dt u du
... −∞ 0
2
u ≤ f (t)
√
+∞ f (t) +∞
u2
Z Z
f (t) 1
= dt = dt =
−∞ 2 0 −∞ 2 2
Numérateur : u > 0, u ≤ f 2
( vu ), vu
≤ x.
x Z √f (t)
1 x
Z Z Z
u>0 du dv = dt u du = f (t)dt
−∞ 0 2 −∞
u 2 ≤ f (t)
t≤x
CQFD (NB: Encore valable même si f n’est pas normalisée).
A. Buys (Dpt Informatique) Simulation sur ordinateur 86 / 110
Intro Loi uniforme Tests Loi non uniforme
Soit umax = 1,
∂v u2
2v = −8u ln u − 4 =0
∂u u
1
ln u = −
2
1
u = e− 2
2
v 2 = −4u 2 ln u =
r e
2
vmax =
e
∀x, e x ≥ 1+x
−1+cu
∀c, e ≥ cu ⇒ ln c + ln u ≤ cu − 1
⇒ ln c − cu + 1 ≤ − ln u
1
−1+ cu 1 1
∀c, e ≥ ⇒ −1 + ≥ − ln c − ln u
cu cu
1
⇒ − ln u ≤ ln c + −1
cu
1
ln c − cu + 1 ≤ − ln u ≤ ln c + −1
cu
On peut donc
1 Accepter systématiquement (u, v ) si 41 ( vu )2 ≤ ln c − cu + 1
2 Refuser systématiquement (u, v ) si 14 ( vu )2 ≥ ln c 0 + c 10 u − 1
v
( )2 ≤ 4(1 + ln c) − 4cu
u p √
|v | ≤ |u| 4(1 + ln c) − 4cu = u a − bu
avec b = 4 c et a = 4 (1 + ln c).
Quand v = 0 (les bornes de u sont atteintes), u = ba ou 0
Ra R √ Ra √
Il faut donc maximiser R = 2 0b du 0 u a−bu dv = 2 0b u a − bu du
√ 2
− 12
Soit t = a − bu, u = a−t 1
b , − 2 b (a − bu) du = dt → du = − b2 t dt.
0 0 0
4a t 3 4 t5
Z
4 2 2
R = − 2 √
t (a − t )dt = − 2 +
b a b 3 √a b 2 5 √a
5 5 5 5
4a 2 4a 2 8a 2 (1 + ln c) 2
R = − 2 = = ... à maximiser.
3b 2 5b 15b 2 c2
A. Buys (Dpt Informatique) Simulation sur ordinateur 89 / 110
Intro Loi uniforme Tests Loi non uniforme
Cas (2)
La même intégration ne peut pas être faite de façon analytique. Des
tests ont montré que la meilleure valeur de c 0 est approximativement
e 1.35
−1.35
Rejet inconditionnel : ( vu )2 ≥ 4 e u + 1.4
On va encore
q se contenter la partie droite de la distribution
2
2 − x2
f (x) = π e
Les fi “difficiles” auront une probabilité pi faible.
Les {fi , i = 1, 15} sont des rectangles → distributions uniformes.
r 15
1 j 2 − j2 X
pj = f ( ) = e 50 pour 1 ≤ j ≤ 15, pi = 0.9183
5 5 25π
i=1
1 j −1
X = U +S avec S=
5 5
Les {fi , i = 16, 30} sont des “coins”.
Cas général
9 9−t 2
D’où on tire : a = e 2 , g(t) = t e 2 .
Fonction de répartition G(x) de g(x):
x x2 Z 2
1 9 x −t
Z Z
9−t 2 1 9−t 2
2
G (x) = t e 2 dt = e 2 dt = e 2 e 2 dt
3 9 2 2 9
x2 9−x 2
9
h 9
i
= e 2 −e − 2 + e− 2 = 1 − e 2 = y
9−x 2
On génère
√ alors z = 1 − y = e 2 dans [0, 1[ et on trouve
x = 9 − 2 ln z.
t2 9
f (t) e− 2 e− 2
= hR u2
i 9−t 2
= R +∞ − u2 ≤1
c g (t) c
+∞
e − 2 du t e 2 c t 3 e 2 du
3
9 9
e− 2 e− 2
c ≥ R +∞ u2
⇒ On peut prendre c = R +∞ u2
t 3
e − 2 du 3 3
e − 2 du
f (X ) 3
On accepte alors X si U < c g (X ) = X
En pratique, on s’arrête quand Q [k] > 1 − 21−n pour des mots sur n
bits.
Algorithme
1 Générer un nombre aléatoire suivant la loi uniforme
V = (b0 , b1 , b2 , ...bn ) (en binaire). Soit j le premier bit dans l’état 1
1
(P {j = J} = 2J+1 ). Soit alors U = (bj+1 , ..., bn ).
2 Si U < ln 2, alors X ← µ(j ln 2 + U) et on s’arrête là.
3 Trouver la plus petite valeur de k telle que Q [k] > U, générer k
nombres aléatoires U1 , U2 , ..., Uk . V ← min(U1 , U2 , ..., Uk ).
4 X ← µ(j + V ) ln 2
h i
X0 U X0
Soit X = . Dans (2), < 1. Si
j ≤X + −X − lnU2 ⇒ j ≤ X
µ ln 2 ln 2 µ ln 2
U X0
P j+ ≤ = P j <X
ln 2 µ ln 2
U X0
+ P j =X P ≤ −X
ln 2 µ ln 2
U X0 1 1 1 1
P j+ ≤ = + + + ... +
ln 2 µ ln 2 2 22 23 2X
1 X0
+ −X
2X +1 µ ln 2
1
− 12 1
X0
2X +1
= 1
+ −X
2 −1 2X +1 µ ln 2
1 1 X0
= 1− + −X
2X 2X +1 µ ln 2
De la même manière,
X0
P (j + V ) ≤ = P j <X
µ ln 2
X0
+ P j =X P V ≤ −X
µ ln 2
A. Buys (Dpt Informatique) Simulation sur ordinateur 101 / 110
Intro Loi uniforme Tests Loi non uniforme
X0 1
P (j + V ) ≤ = 1−
µ ln 2 2X
1 X0
+ P V ≤ −X
2X +1 µ ln 2
X0 X0
P V ≤ −X = P min(U1 , U2 , ..., Uk ) ≤ −X
µ ln 2 µ ln 2
X0
= 1 − P min(U1 , U2 , ..., Uk ) > −X
µ ln 2
k
Y X0
= 1− P Ui > −X
µ ln 2
i=1
k
X0
= 1− 1− +X
µ ln 2
+∞
1 X (ln 2)k
1
P {X ≤ X0 } = ln 2 1 − + 1−
2X 2X k=2 k!
+∞
(
(ln 2)k
1 X0 X
+ − X ln 2 +
2X +1 µ ln 2 k!
k=2
h ik
+∞ ln 2 (1 + X ) − X0
µ
X
−
k!
k=2
1 1 X0
= 1− + −X ln 2 + 1 − ln 2
2X 2X +1 µ
h i
X
ln 2 (1+X )− µ0 X0
− e + 1 + ln 2 (1 + X )−
µ
1 1 −
X0 X
− 0
= 1− + 2 − 21+X e µ = 1 − e µ
2X 2X +1
A. Buys (Dpt Informatique) Simulation sur ordinateur 103 / 110
Intro Loi uniforme Tests Loi non uniforme
Divers
Z x Z +∞
1 a−1 −t
F (x) = t e dt (x ≥ 0) ; Γ(a) = t a−1 e −t dt
Γ(a) 0 0
Γ(n) = (n − 1)!
Permutations
Soient X1 , X2 , ..., Xn un ensemble d’éléments à mélanger. On pourrait
s’inspirer du test de permutation et générer n valeurs dans [0, 1[ et
donner à chaque Xi la position de la i ème valeur par ordre croissant ou
décroissant dans la séquence générée.
Echantillonnage
On veut extraire n éléments d’un fichier qui en contient N en le
parcourant une seule fois. Chaque élément a une probabilité Nn d’être
pris.
Solution : le (t + 1)ème élément est choisi avec la probabilité n−m
N−t si on
a déjà m éléments.
Sur toutes les manières de choisir n parmi N éléments avec m parmi les
t premiers, il y en a
N −t −1 N −t
/
n−m−1 n−m
(N − t − 1)!(N − t − n + m)!(n − m)!
=
(N − t)!(N − t − 1 − n + m + 1)!(n − m − 1)!
n−m
=
N −t