génération de nombres aléatoires
DESCRIPTION
Génération de nombres aléatoires. WRIGHT Nicolas – WOLMER Julien. Avant propos. « Quiconque considère des méthodes arithmétiques pour produire des nombres aléatoires est, bien sûr, en train de commettre un péché » - John Von Neumann - PowerPoint PPT PresentationTRANSCRIPT
1
Génération de nombres aléatoires
WRIGHT Nicolas – WOLMER Julien
2
Avant propos
• « Quiconque considère des méthodes arithmétiques pour produire des nombres aléatoires est, bien sûr, en train de commettre un péché » - John Von Neumann
• « La génération de nombres aléatoires est trop importante pour être confiée au hasard » - Robert R. Coveyou du Oak Ridge National Laboratory
3
Sommaire• Introduction• Comment ça marche• Propriétés d’un bon générateur aléatoire• Générateurs à congruence linéaire
– GCL multiplicatif• Générateurs de Tausworthe• Générateur de Fibonacci éloignés• Générateur combiné• Aperçu de générateurs de nombres aléatoires• Sélection du germe• Mythes au sujet de génération de nombres aléatoires• Conclusion• Questions
4
Introduction
• Une étape clé des simulations– La Génération de Nombres Aléatoires :
générer des valeurs aléatoires pour des variables avec une distribution spécifique (par exemple : normale, exponentielle… ).
5
Introduction
• La G.N.A. :– Génération d’une séquence uniformément
distribuée entre 0 et 1.– Transformation de la séquence afin d’obtenir
des valeurs dans la distribution désirée.
C’est cette première étape qui va être traitée
6
Comment ça marche
• La méthode la plus répandue est l’utilisation d’une relation récursive :
)1.,...)(,( 21 Eqxxfx nnn
7
Comment ça marche
• Par exemple :
• Alors avec on obtient :
• Les 32 premiers nombres obtenus sont : 10, 3, 0, 1, 6, 15, 12, 13, 2, 11, 8, 9, 14, 7, 4, 5, 10, 3, 0, 1, 6, 15, 12, 13, 2, 11, 8, 9, 14, 7, 4, 5.
16mod15 1 nn xx
50 x
)2.(1016mod2616mod1)5(51 Eqx
8
Comment ça marche
• Les X ainsi générés sont donc divisés par 16 pour obtenir une séquence comprise en 0 et 1.
• Pour cet exemple : 0.625, 0.1875, 0, 0.0625, 0.375, 0.9375, 0.75, 0.8125, 0.125, 0.6875, 0.5, 0.5625, 0.875, 0.4375, 0.25, 0.3125, 0.625, 0.1875, 0, 0.0625, 0.375, 0.9375, 0.75, 0.8125, 0.125, 0.6875, 0.5, 0.5625, 0.875, 0.4375, 0.25, 0.3125
9
Comment ça marche
• Si la fonction génératrice est connue, il est possible de retrouver la séquence à chaque fois que la valeur de départ x0 est donnée.
• Cette valeur utilisée pour initialiser la séquence est appelée le germe.
10
Comment ça marche
• Dans cette exemple f est déterministe :– Si le germe est connu, la séquence est
connue.– Ces nombres sont donc partiellement
aléatoires, ils sont appelés pseudo aléatoires. Il est alors possible de répéter une simulation avec exactement les mêmes aspects aléatoires.
11
Comment ça marche
• Dans cet exemple la séquence n’est qu’une répétition cyclique de ses 16 premiers nombres. On parle d’une longueur de cycle de 16.
12
Comment ça marche
• Certain générateur ne répète pas la première partie de la séquence alors appelé la queue
• Dans ce cas la période du générateur est égale à : Taille Queue + Longueur Cycle.
13
Propriétés d’un bon générateur aléatoire
• Il doit être calculable efficacement.
• Sa période doit être importante.
• Les valeurs successives doivent être indépendantes et uniformément distribués.
14
Générateurs à congruence linéaire
• C'est D. H. Lehmer qui l'inventa en 1951.• Il est défini de la manière suivante :
– On choisit un entier m et on travaille dans le groupe Zm des entiers modulo m.
– Soient a ; b Є Zm. Le générateur congruent linéaire est défini par la relation de récurrence suivante :
)3.(mod1 Eqmbayy nn
m est le modulo du générateura est son multiplicateur
b est son incrémenty0 est son germe
15
Générateurs à congruence linéaire
• On obtient alors une suite {Xn} de variables aléatoire uniformes sur [0,1[ en posant :
• La période de la suite, bien évidemment plus petite ou égale à m puisque Zm possède m éléments, peut être rendue maximale en choisissant bien les paramètres du générateur.
)4.(Eqm
yx ii
16
Générateurs à congruence linéaire
• La période de la suite {yn} est égale à m si et seulement si les trois conditions suivantes sont satisfaites :– pgdc(b;m) = 1– a = 1 mod p, pour tout premier p divisant m– a = 1 mod 4 dans le cas où m est un multiple
de 4
17
Générateurs à congruence linéaire
• Un générateur dont la période est maximum est un générateur pleine période.
• Tous les générateurs pleines périodes ne sont pas aussi bons, avec la même période :
18351
18
351
34
22mod1)12(
25.02mod1)12(
nCorrelatioxx
nCorrelatioxx
nn
nn
18
GCL multiplicatif
• C’est le générateur a congruence linéaire présenter précédemment pour lequel b=0
• Dans le GCL multiplicatif l’addition n’est donc pas impliquée.
• Il a pour forme :
)5.(mod1 Eqmaxx nn
19
GCL multiplicatif
• Les GCL multiplicatif sont plus efficaces que les GCL mixtes (temps processeur)
• Cette efficacité est encore accru si m est une puissance de 2
• Il est donc possible de classer les GCL multiplicatifs en 2 types :– m=2k
– m≠2k
20
GCL multiplicatif avec m=2k
• Le modulo est rendu plus simple à calculer.
• La période maximale ne fais q’un quart de la pleine période, soit 2k-2.
• La période maximale est atteinte si et seulement si le multiplicateur a est de la forme 8i±3, et si le germe est impair.
21
GCL multiplicatif avec m=2k
• Exemple :
)6.(2mod5 51 Eqxx nn
Avec x0=1 impair, la période est de 8 ce qui représente bien ¼ de 25.
Avec x0=2 pair, la période n’est plus que de 4.
22
GCL multiplicatif avec m=2k
• Exemple :
)7.(2mod7 51 Eqxx nn
Ici le multiplicateur a n’est pas de la forme 8i±3, avec un germe x0=1 impair, la période n’est que de 4.
Il est donc important de vérifier les 2 conditions évoquées précédement afin d’obtenir une période maximale.
23
GCL multiplicatif avec m≠2k
• Pour résoudre le problème de courte période, il faut choisir m premier.
• Avec le bon choix pour le multiplicateur a on peut avoir une période de m-1 un tel GCLM est considérer comme pleine période.
• Avec ce type GCLM on a forcément xn≠0 si m est premier, on a xnЄ[1 ; m-1].
24
GCL multiplicatif avec m≠2k
• Tout les multiplicateurs n’entraînent pas une efficacité égale.
• En effet la période est maximale si a est une racine primitive de m, pour n=1,2,…,m-2 :
)8.(1mod Eqman
25
GCL multiplicatif avec m≠2k
• Exemple : Le GCLM suivant est pleine période.
• 231-1 = 2 147 483 647 est premier.• 75 est une de ces 534 600 000 racine primitive
)9.)(12mod(7 311
5 Eqxx nn
26
GCL multiplicatif avec m≠2k
• Problèmes :– Les calculs doivent être effectués sans
débordement, la troncature peut affecter la période.
– Le facteur axn-1 peut également provoquer des dépassements de capacité.
27
GCL multiplicatif avec m≠2k
• Solution de Schrage (1979) basé sur l’identité suivante:
• Cette méthode ne s’applique pas si r<q
amramq
maxqxxh
qxrqxaxg
xmhxgmax
modetdivavec
)div()div()(et
)div()mod()(où
)()(mod
28
Générateurs de Tausworthe
• Proposé par Tausworthe en 1965
• Application en cryptographie
• Génération de longs nombres aléatoires
• Séquence aléatoire de nombre binaire divisée en chaînes de longueurs choisies
29
Générateurs de Tausworthe
• Sa forme générale est :
Où ci et bi sont des variables binaires
• Le générateurs utilise les q derniers bits de la séquence, il est alors appelé séquence autorégressive d’ordre q ou AR(q).
• Un générateur AR(q) peut avoir une période maximale de 2q-1.
qnnqnqnqn bcbcbcbcb 0332211 ...
30
Générateurs de Tausworthe
• Notons D un opérateur de délais tel que Dbn=bn+1 alors :
2mod0...
2mod0...
2mod)(...)()()(
0221
1
0221
1
02
21
1
cDcDcD
ou
cDcDcD
ou
qibcqibDcqibDcqibD
qqq
qqq
q
31
Générateurs de Tausworthe
• Ce polynôme est appelé caractéristique, on l’écrit en remplaçant D par x :
02
21
1 ... cxcxcx qq
q
32
Générateurs de Tausworthe
• La période du générateur dépend de la caractéristique.
• C’est le plus petit entier positif n tel que xn-1 soit divisible par la caractéristique.
• Pour un polynôme d’ordre q la plus grande période possible est 2q-1.
• Un polynôme donnant une période maximale est appelé polynôme primitif.
33
Générateurs de Tausworthe
• A partir d’une séquence AR(q), Tausworthe propose de construire des nombres xn de l bits
• La séquence de bits bn est fractionnée en groupes successifs de s bits
• Les l premiers bits de chaque groupe sont utilisés comme une fraction binaire qui s’exprime :
l
jjsn
jn
lsnsnsnsnsnn
bx
ou
bbbbbx
11
1321
2
....0
34
Générateurs de Tausworthe
• On prendra s constante, s ≥ l– Pour s’assurer que les nombres générer
n’aient aucun bit commun.
• s premier par rapport à 2q-1– Pour garantir que les nombres de l bits sont
tirés dans une période entière.
35
Générateurs de Tausworthe
• Les nombres de l bit générés par l’équation précédente ont les propriétés suivantes :– L’espérance de la séquence est ½– La variance est de 1/12– La corrélation de la série est 0
36
Générateurs de Tausworthe
• Exemple : considérons le polynôme x7+x3+1
7,8,9...n,
7,nparnssubstituon
0,1,2,...n,ou
0,1,2,...n,0aonalors
74
37
37
nnn
nnn
nnn
bbb
bbb
bbb
37
Générateurs de Tausworthe
• Avec b0=b1=…=b6=1, nous obtenons la séquence suivante :
...
110
011
011
011
011
4711
3610
259
148
037
bbb
bbb
bbb
bbb
bbb
38
Générateurs de Tausworthe
• La séquence complète est :1111111 0000111 0111100 1011001 0010000 0010001 0011000 1011101 0110110 0000110 0110101 0011100 1111011 0100001 0101011 1110100 1010001 0111111 1000011 1000000
• Les 7 premiers bits forment le germe.
• La séquence ce répète tout les 127 bits.
• 27-1=127, le polynôme x7+x3+1 est primitif.
39
Générateurs de Tausworthe
• Les séquences de Tausworthe peuvent aisément être générées matériellement par des registres à décalage.
Polynôme général de degré q
40
Générateur de Fibonacci éloignés
• Une séquence de Fibonacci est générée par la relation :
• Elle peut être utilisée pour la G.N.A. en la modifiant ainsi :
• On utilise la 5ème et la 17ème plus récente valeur pour réduire au mieux la corrélation.
21 nnn xxx
knnn xxx 2mod175
41
Générateur de Fibonacci éloignés
• Marsaglia (1983) montre que ce générateur passe les tests statistiques
• L’implémentation qu’il recommande utilise 17 emplacements de stockage L[1]…L[17].
42
Générateur de Fibonacci éloignés
• A l’initialisation les 17 emplacements sont remplis avec des entiers pas tous pairs
• Deux pointeurs sont mis en place i sur 5 et j sur 17 • Chaque itération fait appel à la procédure suivante :
x:=L[i]+L[j];L[i]:=x;i:=i-1; IF i=0 THEN i:=17;j:=j-1; IF j=0 THEN i:=17;Return x;
43
Générateur de Fibonacci éloignés
• La période du générateur est 2k(217-1)
• La période d’un tel générateur est donc considérablement plus longue qu’avec un GCL.
• Pour k=8 la période est de 1.6*107
• Pour k=16 la période est de 4.3*109
• Pour k=32 la période est de 2.8*1014
44
Générateur combiné
• Il est possible de combiner plusieurs générateurs pour en former un meilleur.
• Il existe trois techniques de combinaison :– Ajouter des nombres obtenus par 2
générateurs ou plus.– Appliquer un ou-exclusif entre des nombres
obtenus par 2 générateurs ou plus.– Battage (Shuffle) consiste à sélectionner au
hasard un nombre aléatoire parmi plusieurs.
45
Aperçu de générateurs de nombres aléatoires
• Exemple d’un GCL multiplicatif populaire
• Très utilisé dans les année 70, 80 par IBM (SIMPL/I ; APL) , Prime Computer (PRIMOS), International Mathematical and Statistical Libraries…
• Park & Miller l’appelle le ‘minimal standard’
)12mod(7 311
5 nn xx
46
Aperçu de générateurs de nombres aléatoires
• Fishman & Moore (1986) ont comparé les GCL multiplicatifs pleine période de module m=231-1 sur la base de l’efficacité de leur implémentation et de leur aspect aléatoire.
• Ces deux générateurs semblent être les meilleurs :
)12mod(16962
)12mod(4827131
1
311
nn
nn
xx
xx
47
Aperçu de générateurs de nombres aléatoires
• UNIX utilise ce GCL combiné :
• Comme tout les GCL de module m=2k, sa représentation binaire comporte configuration cyclique.
321 2mod)123451103515245( nn xx
48
Aperçu de générateurs de nombres aléatoires
• Un grand nombre de générateurs est proposé dans la littérature.
• Chaque nouvelle proposition vient corriger les problèmes d’anciens générateurs
• Attention beaucoup de générateurs considérés comme bons autrefois ne le sont plus maintenant
49
Aperçu de générateurs de nombres aléatoires
• Il est bien plus sage d’utiliser un générateur établi ayant été testé complètement que d’en inventer un nouveau.
50
Sélection du germe
• Le choix du germe utilisé ne doit pas affecter la simulation.
• Cependant une mauvaise combinaison du germe et du générateur peut mener à des conclusions erronés.
51
Sélection du germe
• Pour une seule variable aléatoire et si le générateur a une pleine période n’importe quel germe peut être considéré comme bon.
• Pour plusieurs variables aléatoires le choix du germe nécessite beaucoup d’attention.
• Une tel simulations est appelé multistream simulation
52
Sélection du germe
• Ne pas utiliser zéro.– 0 convient aux GCL combiné– Mais ne convient ni au GCL multiplicatif ni
Tausworthe qui sont alors bloqués à 0
53
Sélection du germe
• Éviter les valeurs pairs :– Pour les générateurs pleine période toutes les
valeurs non nulles sont équivalentes– Si le générateur n’est pas pleine période le
germe doit être impair– Dans la mesure du possible éviter les
générateurs avec trop de conditions sur le germe ou dont les performances en dépendent.
54
Sélection du germe
• Ne pas utiliser plusieurs fois un stream :– L’utilisation d’un seul stream pour plusieurs
variables aléatoires est une erreur.– Trop forte corrélation entre les différentes
variables tirées successivement.
55
Sélection du germe
• Utiliser des streams ne se recouvrant pas :– Chaque stream nécessite son propre germe– La manière de sélectionner le bon germe est
de s’assurer que la séquence ne se recouvre pas.
– Si {u0,u1…} est la séquence de nombres aléatoires, nous avons besoin de 10000 valeurs par stream alors le germe du premier stream est u0, celui du 2ème u10000, du 3ème u20000…
56
Sélection du germe
• Réutiliser les germes dans les expériences successives :– Lors de la répétition d’une expérience le
même germe peut être utilisé à chaque itération.
57
Sélection du germe
• Ne pas utiliser de germes aléatoires :– Les analystes utilisent souvent l’heure comme
germe ce qui cause 2 problèmes :• La simulation ne peut pas être reproduite.• Rien ne garantit le non recouvrement des
différents streams.
– Ne pas utiliser de germes issus d’un G.N.A.
58
Mythes au sujet de génération de nombres aléatoires
• Les différents points traités dans cette section sont des mythes que quelques analystes mal informés pourraient considérer comme vrais.
59
Mythes au sujet de génération de nombres aléatoires
• Des méthodes arithmétiques complexes entraînent des résultats aléatoires– Difficile a deviner ne signifie pas répondre aux
critères d’uniformité et d’indépendance– Des opérations simples permettent une
évaluation de l’aspect aléatoire analytiquement
60
Mythes au sujet de génération de nombres aléatoires
• Un seul test tel que le chi-square suffit à prouver la qualité d’un G.N.A.– La séquence 1,2,3,4,…,m-1 passe le chi-
square avec un score parfait mais échoue au run test.
– Inversement il est possible d’écrire une séquence passant le run test et échouant au chi-square
– Plusieurs tests sont donc important
61
Mythes au sujet de génération de nombres aléatoires
• Les nombres aléatoires sont imprévisibles – Une vrai séquence aléatoire est imprévisible– Ce n’est pas le cas des générateurs pseudo
aléatoires.– Exemple du lancé de dé
• Imprévisible avec un vrai dé• Dans une simulation avec un échantillon assez
important des tirages, il est possible de calculer les tirages précédents et à venir.
62
Mythes au sujet de génération de nombres aléatoires
• Certains germes sont mieux que d’autres– C’est vrai pour certains générateurs– Il faut éviter d’utiliser ces générateurs– N’importe quel germe différent de 0 devrait
produire des séquences équivalentes
63
Mythes au sujet de génération de nombres aléatoires
• Une implémentation précise n’est pas importante :– La période et l’aspect aléatoire sont garantis
seulement si la formule de génération est implémenté avec précision sans débordement ni troncature.
64
Mythes au sujet de génération de nombres aléatoires
• Les bits des mots générés successivement par un G.N.A. sont également distribués de manière aléatoire – En général les bits de poids fort plus
aléatoirement distribués que les bits de poids faible.
65
Conclusion
66
Questions ?