1 / 66

Génération de nombres aléatoires

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

nishan
Download Presentation

Génération de nombres aléatoires

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 :

  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.

  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 : m est le modulo du générateur a est son multiplicateur b est son incrément y0 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.

  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 :

  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 :

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

  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

  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

  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.

  30. Générateurs de Tausworthe • Notons D un opérateur de délais tel que Dbn=bn+1 alors :

  31. Générateurs de Tausworthe • Ce polynôme est appelé caractéristique, on l’écrit en remplaçant D par x :

  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 :

  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

  37. Générateurs de Tausworthe • Avec b0=b1=…=b6=1, nous obtenons la séquence suivante :

  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.

  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’

  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 :

  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.

  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.

More Related