Daniela Picin
Testi di consultazione Gentle I.E. Random Number Generation and Monte Carlo Methods, 2nd ed. Springer Verlag, 2003 Law A.M., Kelton W.D. - Simulation Modeling and Analysis, third ed. McGraw Hill, 2000 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 Generatore add with carry Generatore substract with borrow Generatore multiply with carry 6
Metodi di generazione Congruenza non lineare Congruenza quadratica Congruenza inversa Combinazione di generatori Tabelle di numeri random Middle Square (Centro del quadrato) 7
Generatore lineare congruente dove x 0, m, a, c modulo, moltiplicatore ed incremento sono chiamati rispettivamente seme, è 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 x ax c mod m i 0,1,... i1 i x Z 0,..., m 1 n m Z 8
GLC con periodo massimo Teorema: Un GLC avrà =m se e solo se: c e m sono primi tra loro (a-1) è multiplo di ogni primo che divide m se m è multiplo di 4, (a-1) è multiplo di 4 Esempio: scelta di m = 2 k c dispari, a = 1 mod 4, = m; 9
GLCM con periodo massimo Teorema: Un GLCM (c = 0) avrà = m-1 se e solo se: m = primo, x 0 0 a = elemento primitivo modulo m ( a n mod m 1 per n = 1,2,,m-2) Teorema: Un GLCM (c = 0) avrà = m/4 = 2 b-2 se e solo se m = 2 b, x 0 numero dispari a 5 mod 8 10
Restrizione dei valori in uscita Analisi teorica u Scelte alternative u i all intervallo (0,1) i x m xi ui m 1 i ui 0,1 0,1 u i xi 12 xi 1 H dove H ui0,1 m m 2m (ACM Transactions on Modeling Computer Simulation Vol. 13, n. 4, 2003) 11
Restrizione dei valori in uscita all intervallo (0,1) In alcune applicazioni generare i valori 0 ed 1 causa problemi Esempio: x è una variabile esponenziale x lgu y lg u lg 1u Il generatore fallisce quando genera u = 0 12
Implementazione al computer Nell implementazione il prodotto a x n-1 può causare overflow. Come evitarlo: se a è relativamente grande a = cd + e x ax mod m i i1 x c dx mod m ex mod m i i1 i1 a = 2 r 2 w se a < m altra procedura di calcolo (GRM) (ACM Transactions on Modeling Computer Simulation Vol. 13, n. 4, 2003) 13
GLCM con buone caratteristiche di qualità 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) 14
Generatore Ricorsivo Multiplo Consideriamo i generatori del tipo x ( a x... a x )mod m con k 1 a 0 n 1 n1 k nk k Il periodo è il più piccolo intero positivo per cui ( x,..., x ) ( x,..., x ) 0 k1 k1 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. 15
GRM e generatore di Fibonacci Per k=2 ed a 1 = a 2 =1 abbiamo il generatore di Fibonacci: x ( x x )mod m n n1 n2 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 16
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) [x n, x n+1 ], b) [x 5n, x 5n+1 ], c) [x 5n+1, x 5n+2 ], d) [x 5n+2, x 5n+3 ], e) [x 5n+3, x 5n+4 ], f) [x 5n+4, x 5n+5 ], 17
Generatore ricorsivo multiplo (G R M ) di ordine k x ( a x... a x )mod m con k 1 a 0 n 1 n1 k nk k u x m n n Se il modulo m è primo può raggiungere il periodo massimo =m k 1 Si ha =m k 1 se il polinomio caratteristico k ki f ( x) xi A mod m x a x mod m è un polinomio primitivo modulo m con m numero primo k i1 i 18
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 nj k nk k 19
Esempi per l implementazione di un GRM Estensione del gen. di Fibonacci x x x mod m n nj nk 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, nk n nk n1 1 k Nella libreria the Boost C++ (Mourer e Watanabe 2010) è disponibile il generatore x mod 2 i xi 21034 xi 44497 32 20
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 nk n1 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) 21
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 : k1 m1 k a -1 a mod m 1 fattore primo s di m -1 r s k1 k k b x mod f x mod m 1 a mod m dove r m 1 m 1 r c x mod f x mod m ha grado 0 fattore primo s di r, 1 s r 22
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 23
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) 24
Esempio di un GRM x a x a x mod m n j nj k nk 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 P. l Ecuyer: i coefficienti a i soddisfano la seguente condizione: (1) a mmod a m dove m a q r con r a i la condizione (1) è verificata i i i i 2 ai m o ai m j per j m 25
Esempio implementato di un GRM z a xmod m m, m con a, x, mz i i codice C: h=x/q; x=a i (x-hq)-hr; if (x<0) x=x+m; Nell esempio m =20a 1 +7=20.554a 5 +1727 26
Combinazione di generatori ricorsivi multipli (CGRM) x a x... a x mod m 1, n 1,1 1, n1 1, k 1, nk 1 x a x... a x mod m 2, n 2,1 2, n1 2, k 2, nk 2 u x m x m n 1, n 1 2, n 2 mod1 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), 27
Esempi di CGRM con buone proprietà strutturali: r j è primo k k m1 1... mj 1 2 j1 28
Esempio con k=3: MRG32k3a 32 1 11 12 13 32 2 21 22 23 1, i 12 1, i2 13 1, i3 1 2, i 21 2, i1 23 2, i3 2 i 1, i 2, i 1 1 m 2 209, a, a, a (0,1.403.580,-810.728) m 2 22853, a, a, a (527.612,0,-1.370.589) x a x a x mod m x a x a x mod m y x x mod m U i yi m 29
Esempio con k=3: MRG32k3a La lunghezza del periodo è: 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. 30
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: a m mod a m j, i j j, i j 31
Congruenza Quadratica 2 n n n X ax bx c mod m 1 1 Congruenza inversa x 1 ax c mod m con 0 x m i i i dove x è l elemento moltiplicativo inverso di x modulo m, se esiste, altrimenti x = 0. 32
Sequenza di Tausworthe bi a1b i1 a2bi 2... aqbi q mod2 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 q1 è un polinomio primitivo su un campo di Galois (2) definito sugli interi 0, 1 q 33
Sequenza di Tausworthe Consideriamo il caso: b i bi r bi q mod 2 con r,q, 0 r q Operazione mod 2 è equivalente all operatore or-esclusivo Esempio: Sia r = 3, q = 5 e b 1 = b 2 = = b 5 =1 Per i 6 b b b I primi 42 b i sono 0 se b b i bi r bi q bi 1 se b i i3 i5 111110001101110101000010010110011111000110 ir ir b b iq iq Il periodo dei bit è 31= 2 q 1 34
Tecnica Feedback Shift Register Per la realizzazione fisica del generatore si ricorre ad una rete di commutazione lineare basata su registri di scalatura circolare La struttura a registri della tecnica FSR permette di utilizzare piu parole dell elaboratore a n bit. 35
Tecnica Feedback Shift Register: esempio Sia r = 3, q = 5 e b 1 = b 2 = = b 5 =1 Per i 6 b b b I primi 42 b i sono i i3 i5 111110001101110101000010010110011111000110 + S b i-5 b i-4 b i-2 b i-1 b i-3 36
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. 37
Lineare ricorrenza con mod 2 x y i i Αx Βx i1, i w -l i i, l12 i 0,1 l1 u y u i i,0 i, k-1 i i,0 i, w-1 t dove x x,..., x vettore di stato di k-bit al passo i t dove y y,..., y vettore in uscita di w-bit al passo i A matrice di transizione, k k di bit B matrice di uscita, w k di bit Tutte le operazioni sono calcolate mod 2 Questa tecnica è alla base di diversi generatori: Tausworthe, GFSR,Twisted GFSR, Mersenne Twister, WELL 38
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 usare semi casuali. Non usare, per inizializzare un GRM, un GLC con stesso modulo m. Non suddividere una sequenza usando valori adiacenti per simulare più variabili richieste dal modello. Come risultato ho correlazione fra le due variabili. 39
Metodi per ottenere sequenze di numeri casuali distinte utilizzando lo stesso generatore x, x, x,..., x, x, x,... 0 1 2 n n1 n2 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 mod n a x0 m GLC n c a 1 n xn a x0 mod m a 1 40
- 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. 41
Secondo caso: Per ottenere il valore dello stato arbitrario s n+z a partire dallo stato s n si calcola con z z s n z A sn mod m A mod m sn mod m 0 1.. 0... A... 0 0.. 1 ak ak 1.. a 1 n 1 n1 k nk 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. n1 x ( a x... a x )mod m X A X mod m n P. L'Ecuyer, Operations Research, 50, 6 (2002), 42
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 z1 A A m m z mod mod se è dispari il n.ro di moltiplicazioni matriciali sarà O (log 2 z). Knuth, The art of computer programming (1998) 43
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 pseudorandom 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 44
45
Generatori di numeri casuali I generatori di numeri casuali usano una sorgente non deterministica Esempio(2004): la sorgente sono dei fotoni inviati su uno specchio semitrasparente. Viene associato il valore 0 o 1 ai due eventi esclusivi (riflessione o trasmissione) http://www.idquantique.com/products /quantis.htm 46
Rumore Termico True Random Number Generator (TRNG) RPG100 / RPG100F» Sono circuiti che generano numeri casuali grazie alla presenza di amplificatori che usano il rumore termico prodotto all interno del semiconduttore Campi di applicazioni : crittografia (il codice prodotto è improbabile sia decodificato, e come risultato è possibile costruire un sistema avanzato di sicurezza come: l'autenticazione sulla rete ad alta velocità, la generazione di password, la serratura elettronica e la chiave elettronica delle auto) 47
Generatori di numeri casuali Un sito dove trovare diverse sequenze casuali: http://www.random.org/ Il servizio è stato costruito e viene gestito da Mads Haahr della Scuola di Informatica e Statistica presso il Trinity College, Dublino 48