Générateurs pseudo-aléatoires Bellitto Thomas, Blot Aymeric, Pierron Théo ENS Ker Lann
Sommaire Problématique Les générateurs congruentiels linéaires Les générateurs congruentiels inverseurs Algorithmes de test
Problématique Énoncé du problème On veut créer un échantillon de n nombres de [0, 1] uniformément répartis et indépendants.
Problématique Énoncé du problème On veut créer un échantillon de n nombres de [0, 1] uniformément répartis et indépendants. Restriction Pour obtenir une suite suffisamment aléatoire, on s intéresse ici à des générateurs déterministes, donc pseudo-aléatoires.
Présentation du LCG Problématique Les générateurs congruentiels linéaires Principe Implémentation et complexité Importance du choix des paramètres Qualité Les générateurs congruentiels inverseurs Algorithmes de test
Principe Principe de l algorithme Le GCL crée une suite aléatoire définie par : { un = au n 1 + b mod m u 0 = seed avec a, b, m et seed des paramètres.
Principe Principe de l algorithme Le GCL crée une suite aléatoire définie par : { un = au n 1 + b mod m u 0 = seed avec a, b, m et seed des paramètres. Variante On peut aussi conserver seulement un nombre fixé des premiers (ou derniers) chiffres.
Implémentation et complexité Complexité spatiale On calcule les termes un par un en stockant seulement le dernier calculé donc la complexité spatiale est O(1).
Implémentation et complexité Complexité spatiale On calcule les termes un par un en stockant seulement le dernier calculé donc la complexité spatiale est O(1). Complexité temporelle Le calcul de u n en fonction de u n 1 est en O(1) (modulo) donc la complexité temporelle du calcul de n termes est en O(n).
Importance du choix des paramètres Pas de place pour le hasard! Le choix de a, b, m et seed influe fortement sur le comportement de la suite. Par exemple, avec a = 51, b = 12, m = 512 et seed = 10, on obtient :
Importance du choix des paramètres Pas de place pour le hasard! Le choix de a, b, m et seed influe fortement sur le comportement de la suite. Par exemple, avec a = 51, b = 12, m = 512 et seed = 10, on obtient : 10, 10,
Importance du choix des paramètres Pas de place pour le hasard! Le choix de a, b, m et seed influe fortement sur le comportement de la suite. Par exemple, avec a = 51, b = 12, m = 512 et seed = 10, on obtient : 10, 10, On ne peut donc pas choisir les paramètres au hasard, sous peine d obtenir une période ridiculement petite.
Théorèmes Théorème Si b 0, alors la période est maximale ssi : b m = 1 Pour tout p premier, p m p a 1 4 m 4 a 1
Théorèmes Théorème Si b 0, alors la période est maximale ssi : b m = 1 Pour tout p premier, p m p a 1 4 m 4 a 1 Théorème Si b = 0, on a la condition suffisante : Si m est premier m a m 1 1 m a j 1 pour tout j [1, m 2]. alors la période est maximale
Qualité Ce générateur est très rapide et peu coûteux en mémoire, mais il est plus facilement craquable que d autres générateurs utilisant les mêmes ressources. Il n est donc pas utilisé en cryptographie. De plus, les termes sont trop corrélés pour être utilisés pour des simulations (Monte-Carlo).
Amélioration On peut choisir m = 2 k, ce qui permet d accélérer les divisions quand on considère les entiers en binaire.
Amélioration On peut choisir m = 2 k, ce qui permet d accélérer les divisions quand on considère les entiers en binaire. Les bits de poids faibles sont alors moins aléatoires. Il est donc recommandé de conserver seulement ceux de poids fort.
Présentation du ICG Problématique Les générateurs congruentiels linéaires Les générateurs congruentiels inverseurs Principe Implémentation et complexité Choix des paramètres Qualité Algorithmes de test
Principe Principe de l algorithme Le GCI crée une suite aléatoire définie par : u n = aun 1 1 + b u n = b sinon u 0 = seed mod m si u n 1 (Z/mZ) avec a, b, m et seed des paramètres. Généralement, on prend m premier pour que Z/mZ soit un corps, ie que tout élément non nul soit inversible.
Amélioration On prend (x n (j)) n Z/p j Z de période p j. r T On pose T = p 1 p r et x n = x n (j) mod T. j=1p j On parle de générateur inverseur composé.
Implémentation et complexité Complexité spatiale On calcule les inverses dès le début du programme et on les stocke dans un tableau. Ainsi, v[i] = i 1. On a donc une complexité spatiale en O(m).
Implémentation et complexité Complexité spatiale On calcule les inverses dès le début du programme et on les stocke dans un tableau. Ainsi, v[i] = i 1. On a donc une complexité spatiale en O(m). Complexité temporelle Pour calculer les inverses, on utilise l algorithme d Euclide (en O(ln(m))).
Implémentation et complexité Complexité spatiale On calcule les inverses dès le début du programme et on les stocke dans un tableau. Ainsi, v[i] = i 1. On a donc une complexité spatiale en O(m). Complexité temporelle Pour calculer les inverses, on utilise l algorithme d Euclide (en O(ln(m))). On calcule m 1 inverses, donc la complexité temporelle de ce 2 calcul est O(m ln(m)).
Implémentation et complexité Complexité spatiale On calcule les inverses dès le début du programme et on les stocke dans un tableau. Ainsi, v[i] = i 1. On a donc une complexité spatiale en O(m). Complexité temporelle Pour calculer les inverses, on utilise l algorithme d Euclide (en O(ln(m))). On calcule m 1 inverses, donc la complexité temporelle de ce 2 calcul est O(m ln(m)). D où une complexité temporelle totale en O(m ln(m)+n), où n est le nombre de termes demandés.
Choix des paramètres Théorème Si P = X 2 bx a est irréductible dans Z/mZ alors la période est maximale.
Qualité Pas d écart statistique indésirable
Qualité Pas d écart statistique indésirable La période reste stable si on fait varier la graine
Qualité Pas d écart statistique indésirable La période reste stable si on fait varier la graine On peut choisir simplement les paramètres qui donnent une période maximale (algorithme développé par W.S.Chou a ) a On inversive maximal period polynomials over finite fields
Qualité Pas d écart statistique indésirable La période reste stable si on fait varier la graine On peut choisir simplement les paramètres qui donnent une période maximale (algorithme développé par W.S.Chou a ) L approche composée permet d allonger considérablement la période. a On inversive maximal period polynomials over finite fields
Algorithmes de test Nous allons ici développer deux algorithmes de test : le test du χ 2 et le «run test».
Principe Test du χ 2 On prend une liste L à tester a. a Il faut prendre L suffisamment grande
Principe Test du χ 2 On prend une liste L à tester a. On note o i le nombre de i présents dans L, e i le nombre théorique de ces i. a Il faut prendre L suffisamment grande
Principe Test du χ 2 On prend une liste L à tester a. On note o i le nombre de i présents dans L, e i le nombre théorique de ces i. On calcule : K = n (e i o i ) 2 i=1 e i a Il faut prendre L suffisamment grande
Principe Test du χ 2 On prend une liste L à tester a. On note o i le nombre de i présents dans L, e i le nombre théorique de ces i. On calcule : K = n (e i o i ) 2 i=1 On compare K à une table de valeurs. Plus K est proche de 0, plus les nombres fournis sont uniformément répartis. a Il faut prendre L suffisamment grande e i
Exemple On suppose qu on a lancé 36 fois un dé à n = 6 faces et qu on a obtenu les résultats : o 1 = 7, o 2 = 10, o 3 = 4, o 4 = 5, o 5 = 6 et o 6 = 4 On calcule K = 4.33.
Exemple On suppose qu on a lancé 36 fois un dé à n = 6 faces et qu on a obtenu les résultats : o 1 = 7, o 2 = 10, o 3 = 4, o 4 = 5, o 5 = 6 et o 6 = 4 On calcule K = 4.33. Pour une tolérance de 5% (et 5 = n 1 degrés de liberté), les tables nous donnent une valeur de 11.1. K < 11.1.
Exemple On suppose qu on a lancé 36 fois un dé à n = 6 faces et qu on a obtenu les résultats : o 1 = 7, o 2 = 10, o 3 = 4, o 4 = 5, o 5 = 6 et o 6 = 4 On calcule K = 4.33. Pour une tolérance de 5% (et 5 = n 1 degrés de liberté), les tables nous donnent une valeur de 11.1. K < 11.1. Donc on peut affirmer que le dé est régulier avec une probabilité d erreur de 5%.
Run test Il s agit de regarder la monotonie locale de la suite, ie le nombre de séquences croissantes et décroissantes. Principe On prend une liste de taille n.
Run test Il s agit de regarder la monotonie locale de la suite, ie le nombre de séquences croissantes et décroissantes. Principe On prend une liste de taille n. On compte le nombre R de séquences monotones
Run test Il s agit de regarder la monotonie locale de la suite, ie le nombre de séquences croissantes et décroissantes. Principe On prend une liste de taille n. On compte le nombre R de séquences monotones On sait que E(R) = 2n 1 et Var(R) = 16n 29 3 90
Run test Il s agit de regarder la monotonie locale de la suite, ie le nombre de séquences croissantes et décroissantes. Principe On prend une liste de taille n. On compte le nombre R de séquences monotones On sait que E(R) = 2n 1 et Var(R) = 16n 29 3 90 On calcule z = R E(R) Var(R)
Run test Il s agit de regarder la monotonie locale de la suite, ie le nombre de séquences croissantes et décroissantes. Principe On prend une liste de taille n. On compte le nombre R de séquences monotones On sait que E(R) = 2n 1 et Var(R) = 16n 29 3 90 On calcule z = R E(R) Var(R) Si z < 1.96, le test est réussi pour une tolérance de 5%
Exemple On prend L = [1, 3, 7, 4, 2, 8, 5].
Exemple On prend L = [1, 3, 7, 4, 2, 8, 5]. Il y a 4 séquences monotones : [1, 3, 7], [4, 2], [8] et [5].
Exemple On prend L = [1, 3, 7, 4, 2, 8, 5]. Il y a 4 séquences monotones : [1, 3, 7], [4, 2], [8] et [5]. Ensuite, E(R) = 2 7 1 = 4.33 et Var(R) = 0.922 donc 3 z = 0.34 et le test est réussi.
Test du LCG On a considéré le LCG utilisé par GCC : a = 1103515245, b = 12345, m = 2 32. Ce générateur passe les tests du χ 2 et le run test.
On peut aussi tracer un graphe avec ce générateur :
En dimension supérieure
Test du ICG On a pris a = 543, b = 1723 et m = 1021. Ce générateur passe aussi les deux tests.
En images
Un générateur de plus grande période a = 1288490188, b = 1 et m = 2 31 1.
Sources http://fr.wikipedia.org/ http://random.mat.sbg.ac.at/ The art of computer programming, D.E.Knuth