Generazione di numeri casuali. Daniela Picin

Documenti analoghi
Generazione di numeri casuali. Daniela Picin

Numeri casuali o pseudocasuali

Generazione di numeri random. Distribuzioni uniformi

Numeri casuali o pseudocasuali. I generatori di numeri casuali (RNGs) risultano componente fondamentale per diverse applicazioni:

Generatori di numeri casuali

Teoria dei Fenomeni Aleatori AA 2012/13

Numeri Random. D.E.I.S. Università di Bologna DEISNet

Gruppi, Anelli, Campi

Simulazione dei dati

NUMERI CASUALI E SIMULAZIONE

Rappresentazione in complemento a 2: caratteristiche generali

Matematica Discreta e Algebra Lineare (per Informatica)

RISOLUZIONE DI SISTEMI LINEARI

1. riconoscere la risolubilità di equazioni e disequazioni in casi particolari

Risoluzione di problemi ingegneristici con Excel

La codifica. dell informazione

Tempo e spazio di calcolo (continua)

SEQUENZE DI NUMERI PSEUDO- CASUALI

Modulo Simulazione Parte 1. Simulazione ad Eventi Discreti: Concetti Base. Organizzazione del modulo

CONGRUENZE. proprietà delle congruenze: la congruenza è una relazione di equivalenza inoltre: Criteri di divisibilità

Random number generators

Programma di Algebra 1

Algoritmi in C++ (prima parte)

Esercitazione del 2/3/2010- Numeri binari e conversione

Matlab. Istruzioni condizionali, cicli for e cicli while.

Algebra Lineare ed Elementi di Geometria Corso di Laurea in Matematica Applicata MODULO 1

Aritmetica dei Calcolatori Elettronici

Sistemi lineari - Parte Seconda - Esercizi

Esercitazione del 09/03/ Soluzioni

Piccolo teorema di Fermat

Programmazione dinamica

Aritmetica dei calcolatori. La rappresentazione dei numeri

Classical simulation of quantum circuits

Laboratorio di Calcolo I. Applicazioni : Metodo Monte Carlo

Informatica Generale 1 - Esercitazioni Flowgraph, algebra di Boole e calcolo binario

ALGEBRA I: SOLUZIONI QUINTA ESERCITAZIONE 9 maggio 2011

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi

Variabili aleatorie. Variabili aleatorie e variabili statistiche

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base

Raccolta degli esercizi svolti in aula

Università del Piemonte Orientale

Introduzione alla probabilità. Renato Mainetti

II Esonero di Matematica Discreta - a.a. 06/07. Versione B

PON Liceo Scientifico Leonardo da Vinci Vallo della Lucania Nuovi percorsi matematici: Osservare, descrivere, costruire.

Corso di Matematica per la Chimica

Rappresentazione dei numeri interi in un calcolatore

Un monomio è in forma normale se è il prodotto di un solo fattore numerico e di fattori letterali con basi diverse. Tutto quanto sarà detto di

Sommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C...

a + 2b + c 3d = 0, a + c d = 0 c d

Esercizi su Python. 14 maggio Scrivere una procedura che generi una stringa di 100 interi casuali tra 1 e 1000 e che:

La simulazione con DERIVE Marcello Pedone LE SIMULAZIONI DEL LANCIO DI DADI CON DERIVE

3.4 Metodo di Branch and Bound

Addizionatori: metodo Carry-Lookahead. Costruzione di circuiti combinatori. Standard IEEE754

1 Funzioni reali di una variabile reale

MATLAB Elementi di grafica Costrutti di programmazione

SISTEMI LINEARI. x y + 2t = 0 2x + y + z t = 0 x z t = 0 ; S 3 : ; S 5x 2y z = 1 4x 7y = 3

E necessaria la chiave segreta? RSA. Funzioni One-way con Trapdoor. Un secondo protocollo

Laboratorio di programmazione

La codifica binaria. Informatica B. Daniele Loiacono

Similitudine (ortogonale) e congruenza (ortogonale) di matrici.

Precorso di Matematica

ESERCIZI SULLE MATRICI

Algoritmi e strutture di dati 2

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Albero di Riscorsione

Dalla tabella alla funzione canonica

Cancellazione numerica e zeri di funzione. Dott. Marco Caliari

Gli insiemi e le relazioni. Elementi di logica

DIARIO DEL CORSO DI TEORIA DEI NUMERI E CRITTOGRAFIA. (41 ore complessive di lezione)

DIARIO DEL CORSO DI ALGEBRA A.A. 2010/11 DOCENTE: ANDREA CARANTI

Conversione di base. Conversione decimale binario. Si calcolano i resti delle divisioni per due

Risoluzione di sistemi lineari sparsi e di grandi dimensioni

Sistemi lineari. Lorenzo Pareschi. Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono

Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli. 9 Novembre 2015

Appunti di matematica per le Scienze Sociali Parte 1

Teoria dell informazione

Esercizi di Complementi di Matematica (L-Z) a.a. 2015/2016

Un seminario sull analisi statistica di formiche virtuali

Transcript:

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