Daniela Picin
Testi di consultazione Gentle I.E. Random Number Generation and Monte Carlo Methods, 2nd ed. Springer Verlag, 2005 Raj Jain - The Art of Computer Systems Performance Analysis: Techniques for Experimental Design, Measurement, Simulation, and Modeling John Wiley & Sons, 1993 2
Un generatore di numeri pseudocasuali èun programma la cui sequenza di uscita è la s i m u l a z i o n e di una sequenza di variabili casuali indipendenti. Alcune applicazioni: Esperimenti statistici Simulazione di sistemi stocastici Metodi Monte-Carlo Algoritmi probabilistici Computer games Crittografia 3
Generatore pseudocasuale Si definisce generatore una struttura che opera nel seguente modo: G = (S, μ, f, U, g) seleziona lo stato iniziale s 0 S tramite μ, pone u 0 = g (s 0 ); per i > 0 i cambiamenti di stato sono determinati dalla ricorrenza s i = f (s i-1 ) ed u i = g (s i ); La sequenza di osservazioni (u 0, u 1, u 2,...) è l'uscita del generatore. 4
Caratteristiche di qualità Uniformità Indipendenza statistica Riproducibilità Periodicità Efficienza Portabilità Jumping-ahead 5
Metodi di generazione Congruenza lineare Generatore lineare congruente (GLC) Generatore Ricorsivo Multiplo e gen. Fibonacci Sequenze di Tausworthe Linear Feedback Shift Register, GFSR Generatore add with carry Generatore substract with borrow Generatore multiply with carry 6
Metodi Congruenziali Una classe di generatori di numeri casuali a distribuzione uniforme è basata sui cosiddetti Metodi Congruenziali. Questo significa semplicemente che sono basati sulla operazione (di congruenza): y = x mod m, che nel concreto consiste in calcolare q = x/m calcolare p = m * q porre y = x-p Esempio: 74 mod 7 = 4; 74/7 = 10.571; 7*10 = 70; 74-70=4 (Slide su internet: F. Mazzia) 7
Metodi di generazione Congruenza non lineare Congruenza quadratica Congruenza inversa Combinazione di generatori Tabelle di numeri random Middle Square (Centro del quadrato) 8
Middle Square a valore compreso tra 0 ed 1 con un numero pari di n cifre decimali; a 2 (doppia precisione); a 2 * 10 (n/2); b = prime n cifre decimali (secondo elemento della sequenza) Esempio: a = 0.5772156649 (n =10) a 2 = 0.33317792380594919201 a 2 * 10 5 = 33317.792380594919201 b = 0.7923805949 (Slide su internet: Manuela Aprile, Maria Chiara Fumi) 9
Generatore lineare congruente ( ) x ax c mod m i 0,1,... i+ 1 = i + = dove x 0, m, a, c Z + sono chiamati rispettivamente seme, modulo, moltiplicatore ed incremento x n Z m ={0,...,m-1} èlo stato al passo n il periodo è il più piccolo intero λ t.c. x λ = x 0 se λ = m abbiamo il periodo massimo se c = 0 abbiamo il GLC Moltiplicativo 10
Generatore lineare congruente Esempio: Parametri iniziali: X 0 = 3, m = 9, c =2, a = 7 X 1 = (7*3+2) mod 9 = 5 X 2 = (7*5+2) mod 9 = 1 X 3 = (7*1+2) mod 9 = 0 X 4 = (7*0+2) mod 9 = 2 X 5 = (7*2+2) mod 9 = 7 X 6 = (7*7+2) mod 9 = 6 X 7 = (7*6+2) mod 9 = 8 (Slide su internet: Manuela Aprile, Maria Chiara Fumi) 11
GLCM con periodo massimo 1 caso m = primo, c = 0, x 0 0 a = elemento primitivo modulo m ( a n mod m 1 per n = 1,2,,m-2) λ = m-1; 2 caso m = 2 b, c = 0, x 0 numero dispari a = 5 mod 8 λ = m/4 = 2 b-2 12
Generatore Lineare Congruente Moltiplicativo La ricorrenza del GLCM per gli interi è equivalente, nell intervallo (0,1), alla ricorrenza u = i 1 a uimod1 con 0 < + u < i 1 13
Restrizione dei valori in uscita Analisi teorica u Scelte alternative u i x ( m 1) all intervallo (0,1) i x m i = ui i = ui [ 0,1] [ 0,1) u i ( x + ) i 12 xi 1 = = + H dove H = ui 0,1 m m 2m ( ) (ACM Transactions on Modeling Computer Simulation Vol. 13, n. 4, 2003) 14
Implementazione al computer Nell implementazione il prodotto a x n-1 può causare overflow. Come evitarlo: se a è relativamente grande a = cd + e a = ±2 r ± 2 w se a < m altra procedura di calcolo (GRM) (ACM Transactions on Modeling Computer Simulation Vol. 13, n. 4, 2003) 15
GLCM con buone figure di merito m è un numero primo; λ = m-1; a e a* sono elementi primitivi modulo m a* è l elemento moltiplicativo inverso di a modulo m (Mathematics of Computation Vol. 68, n. 225, 1999) 16
Generatore Ricorsivo Multiplo Consideriamo i generatori del tipo x = ( a x +... + a x )mod m con k > 1 a 0 n 1 n 1 k n k k Il periodo è il più piccolo intero positivo λ per cui ( x,..., x ) = ( x,..., x ) 0 k 1 λ λ+ k 1 Ci sono m k k-uple possibili di cui uno è il vettore nullo, il periodo massimo è λ = m k 1 Per k > 1 il periodo risulta più grande di quello del GLC. 17
GRM e generatore di Fibonacci Per k=2 ed a 1 = a 2 =1 abbiamo il generatore di Fibonacci: x = ( x + x )modm n n 1 n 2 Svantaggi: alta correlazione seriale: Es: m =1000 x 0 =1 e x 1 =1 La sequenza sarà 2,3,5,8,13,21,34,55,89,144,233,377,610,987,597, Non uniformità k-dimensionale 18
Esempio di struttura reticolare per un generatore di Fibonaci x = (x +x ) mod 125 con x = 0 e x = 1 n n 1 n 2 0 1 Struttura reticolare per le seguenti coppie: a) [xn, xn+1], b) [x5n, x5n+1], c) [x5n+1, x5n+2], d) [x5n+2, x5n+3], e) [x5n+3, x5n+4], f) [x5n+4, x5n+5], 19 Generazione Generazione di di numeri numeri casuali casuali
Generatore ricorsivo multiplo (G R M ) di ordine k x = ( ax +... + a x )mod m con k > 1 a 0 u n 1 n 1 k n k k n = x m n Se il modulo m è primo può raggiungere il periodo massimo λ=m k 1 Si ha λ=m k 1 se il polinomio caratteristico èun polinomio primitivo modulo m con m numero primo ( k ) k k i i f ( x) = xi Amodm= x a x modm i= 1 20
Implementazione GRM In termini di implementazione un caso interessante è k k j f ( x) = x a x a con 1 j k La ricorsione diventa j x = ( a x + a x )mod m n j n j k n k k 21
Esempi per l implementazione di un GRM Estensione del gen. di Fibonacci x = ( x + x )mod m n n j n k Se il modulo è una potenza di 2, es. 2 p, il periodo massimo possibile è (2 k -1) 2 p -1 Deng e Lin [2000] propongono un generatore in cui a 1 = 1 e gli altri a j = 0 eccetto per a k ( ) x = Bx + x mod m con a = 1, a = B, n k n n k n 1 1 k 22
Esempi per l implementazione di un GRM Nel 2003 Deng e Xu propongono dei GRM di ordine k, chiamati DX-K generators, dove gli a j 0 della ricorrenza sono tutti uguali. Nel caso di un GRM DX-k-2 avremo: ( ) x = B x + x mod m con a = a = B, n k n n k n 1 1 k Es. per k=1511 e m =2 31 55719 hanno trovato un DX-1511 con un periodo λ 10 14100.5 ACM Transactions on Modeling Computer Simulation Vol. 13, n. 4, 2003) 23
Generatore ricorsivo multiplo (G R M ) di ordine k La difficoltà è nella ricerca del periodo massimo. CNES perché il polinomio caratteristico f(x) sia un polinomio primitivo modulo m : ( ) ( ) k+ 1 ( ) ( m 1 ) k a -1 a mod m 1 fattore primo s di m-1 (( ) ) ( ) r (( ) ) r ( ) ( ) ( ) ( ) s k+ 1 k ( k ) ( ) ( ) b x mod f x mod m = 1 a mod m dove r = m 1 m 1 c x mod f x mod m ha grado > 0 fattore primo s di r, 1< s< r 24
Generatore ricorsivo multiplo (G R M ) di ordine k la ricerca e la generazione di polinomi primitivi modulo m non è banale poiché occorre la fattorizzazione di ( k 1) ( 1) r = m m in generale si cercano dei valori di m e k tali che r èprimo 25
Generatore ricorsivo multiplo (G R M ) di ordine k Tabella Alcuni valori di m e k tali che m, (m-1)/2 e r siano primi (L Ecuyer, Operation Research Vol. 47, n. 1, 1999) 26
Esempio implementato di un GRM x = ( ax + ax )mod m n j n j k n k Consideriamo un generatore del 5 ordine (k=5) con m=2 31-1 a 1 =107374182 a 5 =104480 a 2 = a 3 = a 4 =0. Il prodotto modulo m è calcolato usando la tecnica descritta da l Ecuyer [1990]: i coefficienti a i soddisfano la seguente condizione: (1) ai( mmod ai) < m dove m= aq i + r con r < ai i la condizione (1) è verificata 2 ai < m o ai = m j per j < m 27
Esempio implementato di un GRM z = a xmod m m, m con a, x, m Z ( ) ( ) i i codice C: h=x/q; x=a i (x-h q)-h r; if (x<0) x=x+m; Nell esempio m =20 a 1 +7=20.554 a 5 +1727 28
29
Combinazione di generatori ricorsivi multipli (CGRM) ( ) x = a x +... a x mod m 1, n 1,1 1, n 1 1, k 1, n k 1 ( ) x = a x +... a x mod m 2, n 2,1 2, n 1 2, k 2, n k 2 ( ) u = x m x m n 1, n 1 2, n 2 Se consideriamo j GRM il CGRM risultante può raggiungere il periodo massimo: ( k ) ( k ) λ = m.c.m. 1... 1 m1 m j P. L'Ecuyer, Operations Research, 47, 1 (1999), 30
Esempi di CGRM con buone proprietà strutturali: r j λ = è primo k k ( m1 1 )...( mj 1) 2 j 1 31
Esempio implementato con k=3: La lunghezza del periodo è: MRG32k3a ( ) ( ) m = 2 209, a, a, a = (0,1403580,-810728) 32 1 11 12 13 m = 2 22853, a, a, a = (527612,0,-1370589) 32 2 21 22 23 ( m )( m ) λ = 1 1 2 2 3.1*10 3 3 191 57 1 2 è soddisfatta la condizione: j,i ( ) 53 1 2 a m j in questo modo il prodotto a j,i x j,i è sempre ben rappresentato in floating point su un computer a 32 bit, con almeno 53 bits di precisione per la mantissa. 32
33
Riepilogo per una esatta implementazione di un GRM Vincoli diversi ai coefficienti: alcuni a j = 0 il prodotto j,i ( ) 53 1 2 a m j gli a j,i soddisfano la condizione: ( mod ) a m a < m j, i j j, i j 34
Tipi diversi di applicazioni richiedono differenti vincoli sui moduli e sui moltiplicatori Una impl. in virgola mobile con 53 bit di precisione permette di avere moduli con più di 31 bit periodi più lunghi. Per computer a 64 bit, vengono richiesti gen. impl. con interi a 64 bit occorrono tabelle di buoni parametri per tali gen. I generatori di numeri casuali sono un po come le automobili. 35
Congruenza Quadratica ( 2 ) X = ax 1+ bx 1+ c mod m n n n Esempio: Parametri iniziali: X 0 = 2, a=2, b=3,c=1, m=4 X 1 = (2*4+3*2+1) mod 4 = 3 X 2 = (2*9+3*3+1) mod 4 = 0 X 3 = (2*16+3*4+1)mod 4 = 1 X 4 = (2*1+3*1+1) mod 4 = 2 X 5 = (2*4+3*2+1) mod 4 = 3 (Slide su internet: Manuela Aprile, Maria Chiara Fumi) 36
Congruenza inversa ( ) x = i 1 ax + i c mod m con 0 + x < i m dove x è l elemento moltiplicativo inverso di x modulo m, se esiste, altrimenti x = 0. L elemento moltiplicativo inverso x di x modulo m è definito per tutti i valori x 0 e relativamente primi rispetto ad m tali che: 1 x xmodm Buone proprietà di uniformità con particolare riferimento alla struttura reticolare e alla correlazione. 37
Sequenza di Tausworthe ( )( ) bi = ab 1 i 1+ a2bi 2 +... + aqbi q mod 2 dove le variabili b i sono dei bit e anche le costanti a 1,a 2,..,a q assumuno valore 0 e 1. Poiché il modulo è un numero primo la sequenza può raggiungere il periodo massimo λ = 2 q 1 se il polinomio caratteristico associato: f z z a z a z a ( ) q ( q 1 = +... + + ) 1 q 1 èun polinomio primitivo su un campo di Galois (2) definito sugli interi 0, 1 q 38
Sequenza di Tausworthe Consideriamo il caso ( )( ) b = b + b mod 2 con 0 < r < q i i r i q Operazione mod 2 è equivalente all operatore or-esclusivo ( ) b = b b i i r i q b = 0 se b = b b = 1 se b b i i r i q i i r i q 39
Sequenza di Tausworthe Esempio: Sia r = 3, q = 5 e b1 = b2 =... = b5 = 1 Per i 6 b = b b i i 3 i 5 I primi 42 b i sono 111110001101110101000010010110011111000110 + S b i-5 b i-4 b i-3 b i-2 b i-1 Il periodo dei bit è 31= 2 q 1 40
Sequenza di Tausworthe Si pone ora il problema di estrarre dei numeri casuali interi dalla sequenza binaria: Si usa la ricorrenza per un numero sufficiente di volte, diciamo L con L q, le L-uple di b i sono interpretate come un numero in base 2. Se L è primo rispetto a λ=2 q 1 il periodo delle L-uple sarà ancora λ = 2 q 1; Si legge la sequenza ogni L + (d scalature) con L q, si dimostra che se d è primo rispetto a λ = 2 q 1 il periodo delle L-uple sarà ancora λ = 2 q 1; (GFSR) si selezionano dalla stringa L q bit non consecutivi, distanziati g bit l uno dall altro. Ogni nuovo numero è ottenuto spostandosi di un bit rispetto ai precedenti. 41
Linear Feedback Shift Register XOR x p-1 x p-2 x q x 1 x 0 USCITA s 42
F.S.R. per la crittografia 43
Selezione del seme in un generatore di numeri random Le successive condizioni permettono maggiore affidabilità per il generatore: Non usare lo zero Evitare i numeri pari: es. GLCM con modulo 2 k Non suddividere una sequenza usando valori adiacenti per simulare più variabili richieste dal modello. Come risultato ho una forte correlazione fra le due variabili. Non usare semi casuali. 44
Metodi per ottenere sequenze di numeri casuali distinte utilizzando lo stesso generatore x, x, x,..., x, x, x,... 0 1 2 n n+ 1 n+ 2 Utilizzare per ogni sequenza un seme diverso. Svantaggio: si possono avere delle sottosequenze sovrapposte. Jumping-ahead: utilizzare un seme iniziale e prendere, per ogni variabile da simulare, sottosequenze diverse e non sovrapposte n GLCM x = a x mod 0 m n GLC ( n ) c a 1 n xn = a x0 + mod m a 1 45
- GRM Sia λ la lunghezza del periodo s n lo stato del generatore al passo n T la funzione di transizione T(s n ) = s n+1, T λ (s) = s Ad esempio vogliamo due sequenze distinte di lunghezza Z. Primo caso: dato s 0 genero Z valori, ottengo lo stato s z e inizio la nuova sottosequenza usando come seme s z+1. Ho due sott.ze non sovrapposte Z+Z < λ. Se serve un num. grande di sott.ze diverse il calcolo di tutti gli stati iniziali diventa piuttosto oneroso. 46
Secondo caso: Per ottenere il valore dello stato arbitrario s n+z a partire dallo stato s n si calcola con ( z ) z sn+ z= A snmod m= A mod m snmod m 0 1.. 0... A =... 0 0.. 1 ak ak 1.. a 1 x = ( a x +... + a x )modm n 1 n 1 k n k x = A X mod m n La matrice (A z mod m) viene calcolata una sola volta e viene utilizzata tutte le volte che occorre una nuova sott.za di dimensione z. n 1 P. L'Ecuyer, Operations Research, 50, 6 (2002), 47
Per grandi valori di z si calcola la matrice (A z mod m) usando l algoritmo divide et impera: A z mod m ( z 2 )( z 2 ) A mod m A mod m mod m se z è pari = ( z 1 A A mod m) mod m se z è dispari il n.ro di moltiplicazioni matriciali sarà O (log 2 z). Knuth, The art of computer programming (1998) 48
Falsi dettagli Un insieme complesso di operazioni conducono a risultati random che superano test di uniformità ed indipendenza; Un solo test come ad es. il test chi-quadro è sufficiente a stabilire la bontà di un generatore I numeri random sono non prevedibili Non è importante una esatta implementazione I bit delle parole successive generate da un generatore sono ugualmente distribuite. Se un algoritmo crea dei n. random di ampiezza l bit, la casualità è garantita soltanto quando vengono usati tutti gli l bit per formare successivi numeri random 49
Generatori di numeri casuali I generatori di numeri casuali usano una sorgente non deterministica (un fenomeno fisico). Esempio(2004): la sorgente sono dei fotoni inviati su uno specchio semitrasparente. Viene associato il valore 0 o 1 ai due eventi esclusivi (trasmissione o riflessione) http://www.idquantique.com/products /quantis.htm 50