Générateur de Nombres
Aléatoires
2eme année master RISR
Module : Modélisation et Simulation Réseaux
Présenter par: - Meddah Kamar
- Kafi Abderrahmane
Enseignant du module : Mme Yehlali
1
Ministère de l’Enseignement Supérieur et de la Recherche
Scientifique
Université Dr Tahar Moulay de Saïda
Faculté de Technologie
Département d’informatique
2018-2019
Le Plan :
I. Introduction
II. Générateur de Nombres Aléatoires
1. Midsquare method (méthode Midsquare)
2. Générateurs Congruentiels Linéaires
3. Générateurs congruentiels multiplicatifs
4. Générateurs congruentiels additifs
III. Conclusion
IV. Références
2
I. Introduction :
Pour mettre au point un modèle de simulation, il faut générer des nombres
aléatoires pour obtenir des observations aléatoires répondant à une distribution
de probabilité.
Plusieurs tables de nombres aléatoires ont déjà été générées par des
mécanismes physiques comme la roulette, mais maintenant nous pouvons
utiliser l'ordinateur pour les réaliser.
Plusieurs "software packages" permettent de générer des nombres aléatoires.
3
II. Générateur de Nombres Aléatoires
Il est important de pouvoir générer efficacement des variables aléatoires
indépendantes à partir de la distribution uniforme sur (0; 1) , puisque:
 Des variables aléatoires de toutes les autres distributions peuvent être
obtenues en transformant des variables aléatoires uniformes.
 Les simulations nécessitent de nombreux nombres aléatoires.
4
II. Générateur de Nombres Aléatoires
Un "bon" générateur de nombres aléatoires devrait posséder les propriétés
suivantes:
• Uniformité: les nombres générés semblent être répartis uniformément sur (0;
1);
• Indépendance: les nombres générés ne montrent aucune corrélation entre eux;
• Réplication: les numéros doivent pouvoir être répliqués (par exemple, pour le
débogage ou la comparaison de différents systèmes).
• Durée du cycle: il faut attendre longtemps avant que les chiffres commencent
à se répéter;
• Vitesse: le générateur devrait être rapide;
• Utilisation de la mémoire: le générateur ne devrait pas nécessiter beaucoup
de stockage.
5
II. Générateur de Nombres Aléatoires
La plupart des générateurs de nombres aléatoires sont de la forme :
Commencez par Z0 (seed)
Pour n = 1; 2; ..... Produire
Zn = f (Zn - 1)
Et
Un = g(Zn)
f est le générateur pseudo-aléatoire
g est la fonction de sortie
{U0; U1; ......} est la suite de nombres aléatoires uniformes sur l'intervalle (0; 1)
6
Les Méthodes Générations de
Nombres Aléatoires
7
1. Midsquare method (méthode Midsquare)
 Commencez avec un nombre à 4 chiffres Z0 (seed)
 Faites un carré pour obtenir 8 chiffres (si nécessaire, ajoutez des zéros à
gauche)
 Prenez les 4 chiffres du milieu pour obtenir le nombre suivant à 4 chiffres
Z1; puis placez Z1 et prenez à nouveau les 4 chiffres du milieu et ainsi de
suite.
 Nous obtenons un nombre aléatoire uniforme en plaçant le point décimal à la
gauche de chaque Zi (c'est-à-dire, diviser par 10 000).
8
1. Midsquare method (méthode Midsquare)
Exemple :
 Pour Z0 = 1234, on obtient 0,1234, 0,5227, 0,3215, 0,3362, 0,3030, 0,1809,
0,2724, 0,4201, 0,6484, 0,0422, 0,1780, 0,1684, 0,8361, 0,8561, 0,2907, ..
 Pour Z0 = 2345, on obtient 0,2345, 0,4990, 0,9001, 0,0180, 0,0324, 0,1049,
0,1004, 0,0080, 0,0064, 0,0040, ... Deux zéros successifs derrière la
décimale ne disparaîtront jamais.
 Pour Z0 = 2100, nous obtenons 0.2100, 0.4100, 0.8100, 0.6100, 0.2100,
0.4100, ... Déjà après quatre chiffres, la séquence commence à se répéter.
9
2. Générateurs Congruentiels Linéaires
La plupart des générateurs de nombres aléatoires utilisés de nos jours sont des
générateurs congruentiels linéaires. Ils produisent une suite d’entiers comprise
entre 0 et m -1 en fonction de :
Zn =(aZn-1 +c) mod m ; n = 1; 2; .....
a est le multiplicateur, c l'incrément et m le module.
Pour obtenir des nombres aléatoires uniformes sur (0; 1) on prend
Un = Zn/ m
Un bon choix de a, c et m est très important.
10
2. Générateurs Congruentiels Linéaires
Un générateur congruentiel linéaire a une période complète (la longueur du
cycle est m) si et seulement si les conditions suivantes sont remplies:
 Le seul entier positif qui divise exactement m et c est égal à 1;
 Si q est un nombre premier qui divise m, alors q divise a-1;
 Si 4 divise m, alors 4 divise a-1.
11
2. Générateurs Congruentiels Linéaires
Exemples:
 Pour (a; c; m ) = (1; 5; 13 ) et Z0 = 1 on obtient la séquence 1; 6; 11; 3; 8; 0;
5; 10; 2; 7; 12; 4; 9; 1; …. qui a période complète (sur 13).
 Pour (a; c; m ) = (2; 5; 13 ) et Z0 = 1 on obtient la séquence 1; 7; 6; 4; 0; 5; 2;
9; 10; 12; 3; 11; 1; ….. qui a un période de 12. Si nous prenons Z0 = 8, on
obtient la séquence 8; 8; 8; …… (période de 1).
12
2. Générateurs Congruentiels Linéaires
Conversion des nombres entiers aléatoires en des nombres uniformes aléatoires
avec la formule:
13
3. Générateurs congruentiels multiplicatifs
Ces générateurs produisent une séquence d’entiers comprise entre 0 et m-1
selon
Zn = a.Zn-1 mod m ; n = 1; 2; .....
Donc, ce sont des générateurs congruentiels linéaires avec c = 0.
Ils ne peuvent pas avoir de période complète, mais il est possible d’obtenir la
période m-1 (donc chaque entier 1, ..., m-1 est obtenu exactement une fois par
cycle) si a et m sont choisis avec soin. Par exemple, sous la forme a =
630360016 et m = 2^ (31) -1.
14
4. Générateurs congruentiels additifs
Ces générateurs produisent des entiers selon
Zn = (Zn-1 + Zn-k) mod m ; n = 1; 2; ……
où k> = 2. Des nombres aléatoires uniformes peuvent à nouveau être obtenus
auprès de
Un = Zn / m
Ces générateurs peuvent durer jusqu’à m^(k).
15
4. Générateurs congruentiels additifs
Désavantage:
Considérons le cas k = 2 (le générateur de Fibonacci). Si nous prenons trois
nombres consécutifs Un-2, Un-1 et Un, alors il n'arrivera jamais que
Un-2 < Un < Un-1 ou Un-1 < Un < Un-2
alors que pour les vraies variables uniformes, ces deux ordres se produisent
avec une probabilité de 1/6.
16
III. Conclusion :
Un générateur de nombres aléatoires est un algorithme qui produit des
suites de nombres qui ont l'apparence d'être aléatoires.
les nombres aléatoire générés par ordinateur sont plutôt des nombres
pseudo-aléatoire parce que qu'ils sont prévisibles et qu'ils peuvent être
reproduits de nouveau.
17
IV. Réferences :
• https://www.win.tue.nl/~marko/2WB05/lecture5.pdf
• http://www-
labs.iro.umontreal.ca/~ferland/ift6575/contenu_cours/5_Simulation/Simulation.
pdf
18
Merci
pour
votre attention
19

Random number generator

  • 1.
    Générateur de Nombres Aléatoires 2emeannée master RISR Module : Modélisation et Simulation Réseaux Présenter par: - Meddah Kamar - Kafi Abderrahmane Enseignant du module : Mme Yehlali 1 Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université Dr Tahar Moulay de Saïda Faculté de Technologie Département d’informatique 2018-2019
  • 2.
    Le Plan : I.Introduction II. Générateur de Nombres Aléatoires 1. Midsquare method (méthode Midsquare) 2. Générateurs Congruentiels Linéaires 3. Générateurs congruentiels multiplicatifs 4. Générateurs congruentiels additifs III. Conclusion IV. Références 2
  • 3.
    I. Introduction : Pourmettre au point un modèle de simulation, il faut générer des nombres aléatoires pour obtenir des observations aléatoires répondant à une distribution de probabilité. Plusieurs tables de nombres aléatoires ont déjà été générées par des mécanismes physiques comme la roulette, mais maintenant nous pouvons utiliser l'ordinateur pour les réaliser. Plusieurs "software packages" permettent de générer des nombres aléatoires. 3
  • 4.
    II. Générateur deNombres Aléatoires Il est important de pouvoir générer efficacement des variables aléatoires indépendantes à partir de la distribution uniforme sur (0; 1) , puisque:  Des variables aléatoires de toutes les autres distributions peuvent être obtenues en transformant des variables aléatoires uniformes.  Les simulations nécessitent de nombreux nombres aléatoires. 4
  • 5.
    II. Générateur deNombres Aléatoires Un "bon" générateur de nombres aléatoires devrait posséder les propriétés suivantes: • Uniformité: les nombres générés semblent être répartis uniformément sur (0; 1); • Indépendance: les nombres générés ne montrent aucune corrélation entre eux; • Réplication: les numéros doivent pouvoir être répliqués (par exemple, pour le débogage ou la comparaison de différents systèmes). • Durée du cycle: il faut attendre longtemps avant que les chiffres commencent à se répéter; • Vitesse: le générateur devrait être rapide; • Utilisation de la mémoire: le générateur ne devrait pas nécessiter beaucoup de stockage. 5
  • 6.
    II. Générateur deNombres Aléatoires La plupart des générateurs de nombres aléatoires sont de la forme : Commencez par Z0 (seed) Pour n = 1; 2; ..... Produire Zn = f (Zn - 1) Et Un = g(Zn) f est le générateur pseudo-aléatoire g est la fonction de sortie {U0; U1; ......} est la suite de nombres aléatoires uniformes sur l'intervalle (0; 1) 6
  • 7.
    Les Méthodes Générationsde Nombres Aléatoires 7
  • 8.
    1. Midsquare method(méthode Midsquare)  Commencez avec un nombre à 4 chiffres Z0 (seed)  Faites un carré pour obtenir 8 chiffres (si nécessaire, ajoutez des zéros à gauche)  Prenez les 4 chiffres du milieu pour obtenir le nombre suivant à 4 chiffres Z1; puis placez Z1 et prenez à nouveau les 4 chiffres du milieu et ainsi de suite.  Nous obtenons un nombre aléatoire uniforme en plaçant le point décimal à la gauche de chaque Zi (c'est-à-dire, diviser par 10 000). 8
  • 9.
    1. Midsquare method(méthode Midsquare) Exemple :  Pour Z0 = 1234, on obtient 0,1234, 0,5227, 0,3215, 0,3362, 0,3030, 0,1809, 0,2724, 0,4201, 0,6484, 0,0422, 0,1780, 0,1684, 0,8361, 0,8561, 0,2907, ..  Pour Z0 = 2345, on obtient 0,2345, 0,4990, 0,9001, 0,0180, 0,0324, 0,1049, 0,1004, 0,0080, 0,0064, 0,0040, ... Deux zéros successifs derrière la décimale ne disparaîtront jamais.  Pour Z0 = 2100, nous obtenons 0.2100, 0.4100, 0.8100, 0.6100, 0.2100, 0.4100, ... Déjà après quatre chiffres, la séquence commence à se répéter. 9
  • 10.
    2. Générateurs CongruentielsLinéaires La plupart des générateurs de nombres aléatoires utilisés de nos jours sont des générateurs congruentiels linéaires. Ils produisent une suite d’entiers comprise entre 0 et m -1 en fonction de : Zn =(aZn-1 +c) mod m ; n = 1; 2; ..... a est le multiplicateur, c l'incrément et m le module. Pour obtenir des nombres aléatoires uniformes sur (0; 1) on prend Un = Zn/ m Un bon choix de a, c et m est très important. 10
  • 11.
    2. Générateurs CongruentielsLinéaires Un générateur congruentiel linéaire a une période complète (la longueur du cycle est m) si et seulement si les conditions suivantes sont remplies:  Le seul entier positif qui divise exactement m et c est égal à 1;  Si q est un nombre premier qui divise m, alors q divise a-1;  Si 4 divise m, alors 4 divise a-1. 11
  • 12.
    2. Générateurs CongruentielsLinéaires Exemples:  Pour (a; c; m ) = (1; 5; 13 ) et Z0 = 1 on obtient la séquence 1; 6; 11; 3; 8; 0; 5; 10; 2; 7; 12; 4; 9; 1; …. qui a période complète (sur 13).  Pour (a; c; m ) = (2; 5; 13 ) et Z0 = 1 on obtient la séquence 1; 7; 6; 4; 0; 5; 2; 9; 10; 12; 3; 11; 1; ….. qui a un période de 12. Si nous prenons Z0 = 8, on obtient la séquence 8; 8; 8; …… (période de 1). 12
  • 13.
    2. Générateurs CongruentielsLinéaires Conversion des nombres entiers aléatoires en des nombres uniformes aléatoires avec la formule: 13
  • 14.
    3. Générateurs congruentielsmultiplicatifs Ces générateurs produisent une séquence d’entiers comprise entre 0 et m-1 selon Zn = a.Zn-1 mod m ; n = 1; 2; ..... Donc, ce sont des générateurs congruentiels linéaires avec c = 0. Ils ne peuvent pas avoir de période complète, mais il est possible d’obtenir la période m-1 (donc chaque entier 1, ..., m-1 est obtenu exactement une fois par cycle) si a et m sont choisis avec soin. Par exemple, sous la forme a = 630360016 et m = 2^ (31) -1. 14
  • 15.
    4. Générateurs congruentielsadditifs Ces générateurs produisent des entiers selon Zn = (Zn-1 + Zn-k) mod m ; n = 1; 2; …… où k> = 2. Des nombres aléatoires uniformes peuvent à nouveau être obtenus auprès de Un = Zn / m Ces générateurs peuvent durer jusqu’à m^(k). 15
  • 16.
    4. Générateurs congruentielsadditifs Désavantage: Considérons le cas k = 2 (le générateur de Fibonacci). Si nous prenons trois nombres consécutifs Un-2, Un-1 et Un, alors il n'arrivera jamais que Un-2 < Un < Un-1 ou Un-1 < Un < Un-2 alors que pour les vraies variables uniformes, ces deux ordres se produisent avec une probabilité de 1/6. 16
  • 17.
    III. Conclusion : Ungénérateur de nombres aléatoires est un algorithme qui produit des suites de nombres qui ont l'apparence d'être aléatoires. les nombres aléatoire générés par ordinateur sont plutôt des nombres pseudo-aléatoire parce que qu'ils sont prévisibles et qu'ils peuvent être reproduits de nouveau. 17
  • 18.
    IV. Réferences : •https://www.win.tue.nl/~marko/2WB05/lecture5.pdf • http://www- labs.iro.umontreal.ca/~ferland/ift6575/contenu_cours/5_Simulation/Simulation. pdf 18
  • 19.

Notes de l'éditeur

  • #5 les nombres aléatoire générés par ordinateur sont plutôt des nombres pseudo-aléatoire parce que qu'ils sont prévisibles et qu'ils peuvent être reproduits de nouveau,
  • #6 Cryptographiquement sécurisé
  • #10 Clairement, les générateurs de nombres aléatoires impliquent beaucoup plus que de faire «quelque chose d’étrange» à un nombre pour obtenir le suivant.
  • #11 Spécifier des nombres entiers a , c et m tels que a<m et c<m.
  • #15 Méthode de congruents multiplicative ≡ Méthode de congruents mixte où c= 0.
  • #16 Méthode de congruents additive ≡ Méthode de congruents mixte où a=1 et c =Z n−k. xn+1 :=(xn +xn−1 ) ( modulo m).
  • #20 Quel est le degré de sécurité (cryptographique) des nombres pseudo-aléatoires? Propriétés souhaitables:   * étant donné que seul un nombre produit par le générateur, il est impossible de prédire les nombres précédents et futurs; * les nombres produits ne contiennent aucun biais connu; * le générateur a une grande période; * le générateur peut se semer n'importe où dans cette période avec une probabilité égale. Par exemple, lorsque vous utilisez le générateur pour générer un identifiant de session sur un serveur Web: nous ne voulons pas que l’utilisateur n prédise l’ID de session de l’utilisateur n = 1.