génération de nombres aléatoires

66
1 Génération de nombres aléatoires WRIGHT Nicolas – WOLMER Julien

Upload: nishan

Post on 14-Jan-2016

18 views

Category:

Documents


1 download

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 Presentation

TRANSCRIPT

Page 1: Génération de nombres aléatoires

1

Génération de nombres aléatoires

WRIGHT Nicolas – WOLMER Julien

Page 2: Génération de nombres aléatoires

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

Page 3: Génération de nombres aléatoires

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

Page 4: Génération de nombres aléatoires

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… ).

Page 5: Génération de nombres aléatoires

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

Page 6: Génération de nombres aléatoires

6

Comment ça marche

• La méthode la plus répandue est l’utilisation d’une relation récursive :

)1.,...)(,( 21 Eqxxfx nnn

Page 7: Génération de nombres aléatoires

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

Page 8: Génération de nombres aléatoires

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

Page 9: Génération de nombres aléatoires

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.

Page 10: Génération de nombres aléatoires

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.

Page 11: Génération de nombres 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.

Page 12: Génération de nombres aléatoires

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.

Page 13: Génération de nombres aléatoires

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.

Page 14: Génération de nombres aléatoires

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

Page 15: Génération de nombres aléatoires

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

Page 16: Génération de nombres aléatoires

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

Page 17: Génération de nombres aléatoires

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

Page 18: Génération de nombres aléatoires

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

Page 19: Génération de nombres aléatoires

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

Page 20: Génération de nombres aléatoires

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.

Page 21: Génération de nombres aléatoires

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.

Page 22: Génération de nombres aléatoires

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.

Page 23: Génération de nombres aléatoires

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].

Page 24: Génération de nombres aléatoires

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

Page 25: Génération de nombres aléatoires

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

Page 26: Génération de nombres aléatoires

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é.

Page 27: Génération de nombres aléatoires

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

Page 28: Génération de nombres aléatoires

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

Page 29: Génération de nombres aléatoires

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 ...

Page 30: Génération de nombres aléatoires

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

qq

qqq

qq

qq

qq

q

Page 31: Génération de nombres aléatoires

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

qq

q

Page 32: Génération de nombres aléatoires

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.

Page 33: Génération de nombres aléatoires

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

Page 34: Génération de nombres aléatoires

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.

Page 35: Génération de nombres aléatoires

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

Page 36: Génération de nombres aléatoires

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

Page 37: Génération de nombres aléatoires

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

Page 38: Génération de nombres aléatoires

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.

Page 39: Génération de nombres aléatoires

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

Page 40: Génération de nombres aléatoires

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

Page 41: Génération de nombres aléatoires

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].

Page 42: Génération de nombres aléatoires

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;

Page 43: Génération de nombres aléatoires

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

Page 44: Génération de nombres aléatoires

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.

Page 45: Génération de nombres aléatoires

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

Page 46: Génération de nombres aléatoires

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

Page 47: Génération de nombres aléatoires

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

Page 48: Génération de nombres aléatoires

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

Page 49: Génération de nombres aléatoires

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.

Page 50: Génération de nombres aléatoires

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.

Page 51: Génération de nombres aléatoires

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

Page 52: Génération de nombres aléatoires

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

Page 53: Génération de nombres aléatoires

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.

Page 54: Génération de nombres aléatoires

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.

Page 55: Génération de nombres aléatoires

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…

Page 56: Génération de nombres aléatoires

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.

Page 57: Génération de nombres aléatoires

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.

Page 58: Génération de nombres aléatoires

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.

Page 59: Génération de nombres aléatoires

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

Page 60: Génération de nombres aléatoires

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

Page 61: Génération de nombres aléatoires

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.

Page 62: Génération de nombres aléatoires

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

Page 63: Génération de nombres aléatoires

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.

Page 64: Génération de nombres aléatoires

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.

Page 65: Génération de nombres aléatoires

65

Conclusion

Page 66: Génération de nombres aléatoires

66

Questions ?