1 Générateurs à Congruences Linéaires (GCL)



Documents pareils
IFT3245. Simulation et modèles

Annexe commune aux séries ES, L et S : boîtes et quantiles

Modélisation et simulation

UFR de Sciences Economiques Année TESTS PARAMÉTRIQUES

Introduction à MATLAB R

Nombres, mesures et incertitudes en sciences physiques et chimiques. Groupe des Sciences physiques et chimiques de l IGEN

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Baccalauréat L spécialité, Métropole et Réunion, 19 juin 2009 Corrigé.

1 Recherche en table par balayage

EXPLOITATIONS PEDAGOGIQUES DU TABLEUR EN STG

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Probabilités Loi binomiale Exercices corrigés

Représentation d un entier en base b

Qu est-ce qu une probabilité?

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

Les probabilités. Chapitre 18. Tester ses connaissances

Systèmes de transmission

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Estimation et tests statistiques, TD 5. Solutions

Loi binomiale Lois normales

LES GENERATEURS DE NOMBRES ALEATOIRES

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Transmission d informations sur le réseau électrique

Cours 7 : Utilisation de modules sous python

La fonction exponentielle

Projet de Traitement du Signal Segmentation d images SAR

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

16 Chapitre 16. Autour des générateurs pseudoaléatoires

Initiation à l algorithmique

3 ème 2 DÉVELOPPEMENT FACTORISATIONS ET IDENTITÉS REMARQUABLES 1/5 1 - Développements

1 Complément sur la projection du nuage des individus

TSTI 2D CH X : Exemples de lois à densité 1

Simulation de variables aléatoires

TABLE DES MATIERES. C Exercices complémentaires 42

TD1 Signaux, énergie et puissance, signaux aléatoires

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

Sillage Météo. Notion de sillage

données en connaissance et en actions?

Algorithmes récursifs

CONCOURS D ENTREE A L ECOLE DE 2007 CONCOURS EXTERNE. Cinquième épreuve d admissibilité STATISTIQUE. (durée : cinq heures)

Compter à Babylone. L écriture des nombres

Biostatistiques Biologie- Vétérinaire FUNDP Eric Depiereux, Benoît DeHertogh, Grégoire Vincke

NOTE SUR LA MODELISATION DU RISQUE D INFLATION

Correction du baccalauréat ES/L Métropole 20 juin 2014

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

Rappels sur les suites - Algorithme

Chapitre 7. Récurrences

Théorie et Codage de l Information (IF01) exercices Paul Honeine Université de technologie de Troyes France

Algorithmique avec Algobox

Nombres premiers. Comment reconnaître un nombre premier? Mais...

Précision d un résultat et calculs d incertitudes

Probabilités conditionnelles Loi binomiale

Cours d initiation à la programmation en C++ Johann Cuenin

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

Probabilités sur un univers fini

L ALGORITHMIQUE. Algorithme

Probabilités III Introduction à l évaluation d options

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique

Cours 1 : Qu est-ce que la programmation?

Feuille TD n 1 Exercices d algorithmique éléments de correction

Exercice autour de densité, fonction de répatition, espérance et variance de variables quelconques.

Statistiques Décisionnelles L3 Sciences Economiques & Gestion Faculté d économie, gestion & AES Université Montesquieu - Bordeaux

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

ASR1 TD7 : Un microprocesseur RISC 16 bits

La simulation probabiliste avec Excel

VI. Tests non paramétriques sur un échantillon

STAGE IREM 0- Premiers pas en Python

Suites numériques 3. 1 Convergence et limite d une suite

BACCALAURÉAT GÉNÉRAL SESSION 2012 OBLIGATOIRE MATHÉMATIQUES. Série S. Durée de l épreuve : 4 heures Coefficient : 7 ENSEIGNEMENT OBLIGATOIRE

MÉTHODE DE MONTE CARLO.

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007

Fluctuation d une fréquence selon les échantillons - Probabilités

Introduction à l approche bootstrap

Bases de programmation. Cours 5. Structurer les données

Feuille d exercices 2 : Espaces probabilisés

Objets Combinatoires élementaires

1.6- Génération de nombres aléatoires

Les devoirs en Première STMG

Principe de symétrisation pour la construction d un test adaptatif

Modes opératoires pour le chiffrement symétrique

Exercices sur le chapitre «Probabilités»

Probabilités. I Petits rappels sur le vocabulaire des ensembles 2 I.1 Définitions... 2 I.2 Propriétés... 2

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Factorisation Factoriser en utilisant un facteur commun Fiche méthode

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Chapitre 3 : INFERENCE

La persistance des nombres

INTRODUCTION A L ELECTRONIQUE NUMERIQUE ECHANTILLONNAGE ET QUANTIFICATION I. ARCHITECTURE DE L ELECRONIQUE NUMERIQUE

Quantification Scalaire et Prédictive

Corrigé des TD 1 à 5

LEÇON N 7 : Schéma de Bernoulli et loi binomiale. Exemples.

Texte Agrégation limitée par diffusion interne

Factorisation d entiers (première partie)

TP 1. Prise en main du langage Python

3 Approximation de solutions d équations

Problèmes arithmétiques issus de la cryptographie reposant sur les réseaux

Transcription:

TP 4 : Générateurs pseudo-aléatoires et applications Un générateur de nombres pseudo-aléatoires, pseudorandom number generator (PRNG) en anglais, est un algorithme qui génère une séquence de nombres présentant certaines propriétés du hasard. Cependant, les sorties d un tel générateur ne sont pas entièrement aléatoires ; elles s approchent seulement des propriétés idéales des sources complètement aléatoires. John von Neumann insista sur ce fait avec la remarque suivante : 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é. De vrais nombres aléatoires peuvent être produits avec du matériel qui tire parti de certaines propriétés physiques. L objectif de ce TP est d introduire les principales méthodes de génération de nombre pseudoaléatoires. Elles seront appliquées dans le cadre de méthodes de Monte-Carlo. 1 Générateurs à Congruences Linéaires (GCL) Ces générateurs produisent la suite de nombres (X n ) n 0 définis par la relation : pour n 0, X n+1 = (a X n + c) mod m, où m est un entier positif (le module), a, c et X 0 sont des entiers compris entre 0 et m respectivement appelés multiplicateur, incrément et graine (seed en anglais). La suite (X n ) ainsi définie est périodique à partir d un certain rang. Afin d obtenir un générateur aléatoire performant, il faudra donc commencer par avoir une période suffisamment longue. 1.1 Un premier cas : m = 2 n. Il est plus facile pour un ordinateur (qui gère les données en binaire) de calculer avec des modulo 2 n. C est pourquoi on se restreindra à ce cas dans cette sous-partie. Considérons le générateur suivant : le GCL avec m = 65536 = 2 16, a = 422, c = 987, X 0 = 641. Calculons la suite produite en utilisant les commandes suivantes : > a*641+c > 271489 %% m > a*9345 +c > 3944577 %% m > a*12417 +c > 5240961 %% m Il est indispensable de rejeter des générateurs ayant une période trop petite. On peut procéder de deux façons : trouver des conditions sur a et c qui assurent une période assez grande pour le GCL. déterminer la période du GCL choisi, et rejeter le générateur si la période est trop courte. Le théorème suivant donne une condition nécessaire et suffisante sur la période du GCL : Théorème 1.1 Dans le cas où m = 2 n, la période du GCL est maximale (vaut m) si et seulement si c est impair et a = 1 mod 4 Que pensez-vous de la période du générateur précédent? Déterminer et vérifier numériquement la période du GCL avec m = 4, a = 5, c = 7, X 0 = 15. 1

1.2 Cas plus général Dans cette sous-partie, le module n est plus nécessairement une puissance de 2. Nous avons le résultat suivant : Théorème 1.2 (Hull-Dobel 1962) Soit la suite (X n ) produite par l algorithme X n+1 = (a X n + c) mod m,. Alors le cycle maximal est de longueur m si et seulement si les trois hypothèses suivantes sont vérifiées : 1. PGCD(a, m) = 1, PGCD(c, m) = 1 ; 2. si un nombre premier p divise m, alors p divise a 1; 3. si 4 divise m, alors 4 divise a 1. Vérifier les conditions du théorème pour les valeurs a = 4, c = 2, m = 9, a = 2, c = 2, m = 9, a = 3, c = 3, m = 9, a = 1, c = 1, m = 9. Voici quelques générateurs : X n+1 = (7 5 X n ) mod 2 31 1, (générateur IBM) X n+1 = (427419669081 X n ) mod 999999999989, (générateur Maple 999999999989 est premier) dont les périodes respectives sont 2 30 = 1073741824 et 2 29 = 536870912. 1.3 Premiers tests de la pertinence de ces générateurs 1.3.1 Tests visuels pour la pertinence du générateur d IBM Le GCL précédemment étudié permet de générer des entiers entre 0 et m 1. Afin de se ramener à des réels compris entre 0 et 1, on étudie la suite U n = Xn. Le but de cette partie est d obtenir des m critères visuels de la proximité de la suite U n obtenue par le générateur d IBM avec des réalisations indépendantes de la loi uniforme sur [0,1]. Pour commencer, on pourra écrire la fonction suivante qui permet de générer la suite U n : randomgeneration=function(x0,a,c,m,n) #Cette fonction permet de generer les n premiers termes de la suite de nombres #pseudo-aleatoires issu de la definition X_{n+1}= a*x_n+c mod m. Cette suite de # nombres est divisee par m pour avoir des reels entre 0 et 1. #X0 est suppose etre entre 0 et m. { #debut de la fonction x=c() #initialisation de x 2

x[1]=x0 #initialisation de x for (i in 1:n) { #debut de la boucle for y=a*x[i]+c r=y %% m #calcul du modulo x[i+1]=r #affectation } #fin de la boucle for u=x/m #sortie de la fonction } #fin de la fonction On pourra utiliser ce script avec les valeurs de a, m et c du générateur d IBM pour obtenir une suite de n réels entre 0 et 1. On souhaite comparer la distribution de ces n nombres avec la distribution uniforme sur [0,1]. Pour cela, on peut produire les deux graphiques suivants : Comparaison de l histogramme des valeurs obtenues avec la densité de la loi uniforme sur [0,1]. > hist(u) > abline(h=1,col= red ) Tracer les fonctions de répartition empirique et théorique > plot(sort(u),1:1:length(u)/length(u)) > abline(0,1,col= blue ) Que pensez-vous de la qualité du générateur d IBM? On pourra faire varier la valeur de n. On pourra reproduire la même étude pour étudier la pertinence du générateur de nombre uniforme sur [0,1] de R. On obtiendra alors la suite de nombre pseudo-aléatoire par la commande: > ur=runif(n,0,1) 1.3.2 Comparaison des générateurs de nombres aléatoires de R et d IBM Par la sous-partie précédente, on sait obtenir deux échantillons de même taille de nombre pseudoaléatoires entre 0 et 1 : l un issu du générateur d IBM et l autre de la fonction runif de R. Que pouvez-vous dire des temps de calculs quand n = 100000? Dans ce paragraphe, on souhaite tester visuellement si ces deux échantillons suivent la même loi. Le scatter-plot des deux échantillons > plot(u,ur) semble-t-il indiquer une dépendance entre ces deux échantillons? Les points ainsi obtenus vous semblent-ils avoir été tirés uniformément dans le carré? Le QQ-plot (Quantile to Quantile) suivant indique-t-il que la distribution est la même? > plot(sort(u),sort(ur)) 3

1.3.3 Mise en évidence de l aspect déterministe Des tirages aléatoires successifs doivent être indépendants. Ce n est évidemment pas le cas pour les générateurs pseudo-aléatoires. Un générateur pseudo-aléatoire doit toujours être utilisé avec méfiance. Dans certains cas, on peut voir apparaître le déterminisme de l algorithme. Par exemple, soit le générateur aléatoire X n+1 = (11 X n + 1) mod 71. Ce générateur est de période 70 mais que se passe-t-il si pour choisir des points aléatoires dans le plan, on prend (X n+1,x n )? Comparer la figure obtenue avec celle pour le générateur X n+1 = (24298 X n + 99991) mod 199017. 2 Applications 2.1 Un premier pas vers les méthodes de Monte-Carlo En utilisant le générateur de nombres pseudo-aléatoire de votre choix, simuler un échantillon u de taille n de nombres uniformément tirés entre 0 et 1. Calculer les valeurs successives de la moyenne empirique des i premières valeurs pour i allant de 1 à n. représenter graphiquement ces valeurs en bleu et superposer sur le même graphique la droite horizontale d ordonnée 0.5 en rouge. On pourra utiliser les commandes suivantes: > moyennes=cumsum(u)/(1:100000) > plot(moyennes,pch=".",col="blue") > abline(h=0.5,col="red") Etudier le comportement de ce graphique lorsque n et la méthode de simulation de nombres aléatoires varient. 2.2 Un générateur particulier On considère le générateur suivant : X=0 Y=1 repeter X=X+1 et Y=Y/2 jusqu a runif(1,0,1)>y Return X Déterminer la loi de X. Simuler n réalisations indépendantes de X. On pourra le faire avec une condition while comme dans le script suivant: X=0 Y=1 while (runif(1,0,1) < Y) { X=X+1 Y=Y/2 4

} X Superposer les fréquences empiriques obseervées avec les probabilités théoriques données par la loi de X. (fonction table puis barplot). 5