40
Generazione di numeri casuali Generazione di numeri casuali Generazione di numeri casuali Daniela Picin

Generazione di numeri casuali - DidatticaWEBdidattica.uniroma2.it/assets/uploads/corsi/41659/Generatori... · • Periodicità • Efficienza • Portabilità ... Generazione di numeri

Embed Size (px)

Citation preview

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali

Daniela Picin

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali2

Testi di consultazione

• Gentle I.E. – Random Number Generation and Monte Carlo Methods, 2nd ed. – Springer Verlag, 2003

• Raj Jain - The Art of Computer Systems Performance Analysis: Techniques for Experimental Design, Measurement, Simulation, and Modeling –John Wiley & Sons, 1993

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali3

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

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali4

Generatore pseudocasualeSi definisce generatore una struttura

G = (S, μ, f, U, g)che opera nel seguente modo:

• seleziona lo stato iniziale s0 ∈ S tramite μ, pone u0 = g (s0 );

• per i > 0 i cambiamenti di stato sono determinati dalla ricorrenza si = f (si-1) ed ui = g (si);

La sequenza di osservazioni (u0, u1, u2,...) è l'uscita del generatore.

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali5

Caratteristiche di qualità

• Uniformità• Indipendenza statistica• Riproducibilità• Periodicità• Efficienza• Portabilità• Jumping-ahead

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali6

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

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali7

Metodi di generazione

• Congruenza non lineare– Congruenza quadratica– Congruenza inversa

• Combinazione di generatori• Tabelle di numeri random• Middle Square (Centro del quadrato)

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali8

Generatore lineare congruente

dove x0, m, a, c ∈ Z+ sono chiamati rispettivamente seme, modulo, moltiplicatore ed incremento

xn ∈ Zm ={0,...,m-1} è lo stato al passo n

il periodo è il più piccolo intero λ t.c. xλ = x0

se λ = m abbiamo il periodo massimo

se c = 0 abbiamo il GLC Moltiplicativo

( )1 mod i 0,1,...i ix ax c m+ = + =

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali9

GLCM con periodo massimo1° caso• m = primo, c = 0, x0 ≠ 0 • a = elemento primitivo modulo m

( a n mod m ≠ 1 per n = 1,2,…,m-2)• λ = m-1;

2° caso• m = 2b, c = 0, x0 numero dispari• a Ξ 5 mod 8 • λ = m/4 = 2b-2

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali10

Restrizione dei valori in uscita all’intervallo (0,1)

• Analisi teorica

• Scelte alternative

[ ) 0,1ii i

xu um

= ⇒ ∈

( )[ ] 0,1

1i

i ixu u

m= ⇒ ∈

( ) ( )1 2 1 H dove H 0,12m

i ii i

x xu um m+

= = + = ⇒ ∈

(ACM Transactions on Modeling Computer Simulation Vol. 13, n. 4, 2003)(ACM Transactions on Modeling Computer (ACM Transactions on Modeling Computer Simulation Vol. 13, n. 4, 2003)Simulation Vol. 13, n. 4, 2003)

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali11

Nell’implementazione il prodotto a xn-1 puòcausare overflow. Come evitarlo:• se a è relativamente grande

– a = cd + e

– a = ±2r ± 2w

• se a < altra procedura di calcolo (GRM)

Implementazione al computer

m

(ACM Transactions on Modeling Computer Simulation Vol. 13, n. 4, 2003)(ACM Transactions on Modeling Computer (ACM Transactions on Modeling Computer Simulation Vol. 13, n. 4, 2003)Simulation Vol. 13, n. 4, 2003)

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali12

Generatore Ricorsivo Multiplo

Consideriamo i generatori del tipo

Il periodo è il più piccolo intero positivo λ per cui

Ci sono mk k-uple possibili di cui uno è il vettore nullo, il periodo massimo è λ = mk –1

Per k > 1 il periodo risulta più grande di quello del GLC.

0 1 1( ,..., ) ( ,..., )k kx x x xλ λ− + −=

1 1 k( ... )mod con k 1 a 0n n k n kx a x a x m− −= + + > ≠

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali13

GRM e generatore di FibonacciPer k=2 ed a1= a2=1 abbiamo il generatore di Fibonacci:

Svantaggi:•alta correlazione seriale:Es: m =1000 x0=1 e x1=1 La sequenza sarà2,3,5,8,13,21,34,55,89,144,233,377,610,987,597,…

•Non uniformità k-dimensionale

1 2( )modn n nx x x m− −= +

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali14

Esempio di struttura reticolare per un generatore di Fibonaci

( )mod 125 con 0 e 11 2 0 1x x x x xn n n= + = =− −

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],

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali15

Generatore ricorsivo multiplo (G R M ) di ordine k

Se il modulo m è primo può raggiungere il periodo massimo λ=mk –1Si ha λ=mk –1 se il polinomio caratteristico

è un polinomio primitivo modulo mcon m numero primo

1 1 k( ... )mod con k 1 a 0n n k n kx a x a x m− −= + + > ≠

n nu x m=

( )1

( ) mod modkk k i

ii

f x xI A m x a x m−

=∑= − = −

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali16

Implementazione GRM

In termini di implementazione un caso interessante è

La ricorsione diventa

( ) con 1k k jj kf x x a x a j k−= − − ≤ ≤

( )mod n j n j k n kx a x a x m− −= +

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali17

Esempi per l’implementazione di un GRM

Estensione del gen. di Fibonacci

Se il modulo è una potenza di 2, es. 2p, il periodo massimo possibile è (2k -1) 2p-1

Deng e Lin [2000] propongono un generatore in cui a1 = 1 e gli altri aj = 0 eccetto per ak

( )modn n j n kx x x m− −= +

( )1 1mod con 1, , n n k n kx Bx x m a a B n k− −= + = = ≥

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali18

Esempi per l’implementazione di un GRM

Nel 2003 Deng e Xu propongono dei GRM di ordine k, chiamati DX-K generators, dove gli aj ≠ 0 della ricorrenza sono tutti uguali.

Nel caso di un GRM DX-k-2 avremo:

Es. per k=1511 e m =231 – 55719 hanno trovato un DX-1511 con un periodo λ ≅ 1014100.5

( )1 1mod con , n n k n kx B x x m a a B n k− −= + = = ≥

ACM Transactions on Modeling Computer Simulation Vol. 13, n. 4, 2003)ACM Transactions on Modeling Computer ACM Transactions on Modeling Computer Simulation Vol. 13, n. 4, 2003)Simulation Vol. 13, n. 4, 2003)

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali19

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 :( ) ( )( )( )

( ) ( )( )( ) ( )( ) ( ) ( )

( ) ( )( )( )

11

1r

r

-1 mod 1 fattore primo di 1

x mod mod 1 mod dove 1 1

x mod mod ha grado 0 fattore primo di , 1

m skk

k kk

a a m s m -

b f x m a m r m m

c f x m s r s r

−+

+

≠ ∀

= − = − −

> ∀ < <

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali20

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

in generale si cercano dei valori di m e k tali che r è primo

( ) ( )1 1kr m m= − −

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali21

Generatore ricorsivo multiplo (G R M ) di ordine k

TabellaAlcuni valori di m e k tali che m, (m-1)/2 e r siano primi

(L’Ecuyer, Operation Research Vol. 47, n. 1, 1999)(L(L’’Ecuyer, Operation Research Vol. 47, n. Ecuyer, Operation Research Vol. 47, n. 1, 1999)1, 1999)

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali22

Esempio di un GRM

Consideriamo un generatore del 5° ordine (k=5)con m=231-1 a1=107374182 a5=104480 a2= a3= a4=0.

Il prodotto modulo m è calcolato usando la tecnica descritta da l’Ecuyer [1990]:• i coefficienti ai soddisfano la seguente condizione:

•la condizione (1) è verificata

( )modn j n j k n kx a x a x m− −= +

( )(1) mod dove con i i i ia m a m m a q r r a i< = + < ∀

2i o per ia m a m j j m< = <⎢ ⎥⎣ ⎦

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali23

Esempio implementato di un GRM

codice C:h=x/q;x=ai∗(x-h∗q)-h∗r;if (x<0) x=x+m;Nell’esempio m =20∗a1+7=20.554∗a5+1727

( ) ( )mod , con , ,i iz a x m m m a x m= ∈ − ∈Z

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali24

Combinazione di generatori ricorsivi multipli (CGRM)

Se consideriamo j GRM il CGRM risultante può raggiungere il periodo massimo:

( )( )( )

1, 1,1 1, 1 1, 1, 1

2, 2,1 2, 1 2, 2, 2

1, 1 2, 2

...... mod

...... mod n n k n k

n n k n k

n n n

x a x a x m

x a x a x m

u x m x m

− −

− −

= +

= +

= −

( ) ( )1 m.c.m. 1 ........ 1k kjm mλ = − −

P. L'Ecuyer, Operations Research, 47, 1 (1999),P. L'Ecuyer, Operations Research, 47, 1 (1999),

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali25

Esempi di CGRM con buone proprietàstrutturali:

( ) ( )11

è primo

1 ... 12

j

k kj

j

r

m mλ −

− −=

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali26

Esempio con k=3:MRG32k3a

La lunghezza del periodo è:

è soddisfatta la condizione:

in questo modo il prodotto aj,i xj,i è sempre ben rappresentato in floating point su un computer a 32 bit, con almeno 53 bits di precisione per la mantissa.

( )( )

321 11 12 13

322 21 22 23

2 209, , , (0,1403580,-810728)

2 22853, , , (527612,0,-1370589)

m a a a

m a a a

= − =

= − =

( ) 531 2j,i ja m − ≤

( )( )3 3 191 571 21 1 2 2 3.1*10m m= − − ≈ =λ

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali27

Riepilogo per una esatta implementazione di un GRM

Vincoli diversi ai coefficienti:• alcuni aj = 0

• il prodotto

• gli aj,i soddisfano la condizione:

( ) 531 2j,i ja m − ≤

( ), , mod j i j j i ja m a m<

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali28

Congruenza Quadratica

( )21 1 modn n nX aX bX c m− −= + +

Congruenza inversa( )1 mod on 0i i ix ax c m c x m−

+ = + ≤ <

dove x– è l’elemento moltiplicativo inverso di x modulo m, se esiste, altrimenti x– = 0.

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali29

Sequenza di Tausworthe

dove le variabili bi sono dei bite anche le costanti a1,a2,…..,aq assumuno valore 0 e 1.

Poiché il modulo è un numero primo la sequenza può raggiungere il periodo massimo λ = 2q –1 se il polinomio caratteristico associato:

è un polinomio primitivo su un campo di Galois (2) definito sugli interi 0, 1

( )( )1 1 2 2 ... mod 2i i i q i qb a b a b a b− − −= + + +

( ) ( )11 1...q q

q qf z z a z a z a−−= − + + +

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali30

Sequenza di TauswortheSi 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 bi sono interpretate come un numero in base 2. Se L è primo rispetto a λ=2q –1 il periodo delle L-uple sarà ancora λ = 2q –1;

• Si legge la sequenza ogni L + (d scalature) con L ≤ q, si dimostra che se d è primo rispetto a λ = 2q –1 il periodo delle L-uple sarà ancora λ = 2q –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.

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali31

Lineare ricorrenza con mod 2

( )

( )( )

1,

-, 1

1

,0 , -1

,0 , -1

2 0,1

dove ,..., vettore di stato di k-bit al passo i

dove ,..., vettore in uscita di w-bit al passo i

matrice di transizione, di b

i i

i iw l

i i l il

i i i k

i i i w

u y u

x x

y y

k k

−=∑

=

=

= ∈

=

=

×

x Αxy Βx

x

y

A

t

t

it

matrice di uscita, di bitw k×B

Tutte le operazioni sono calcolate mod 2Questa tecnica è alla base di diversi generatori:Tausworthe, GFSR,Twisted GFSR, Mersenne Twister, WELL

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali32

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 2k

•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.

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali33

Metodi per ottenere sequenze di numeri casuali distinte utilizzando lo stesso generatore

•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

– GLCM

– GLC ( )0

1mod

1

nn

n

c ax a x m

a−

= +−

0 modnnx a x m=

0 1 2 1 2, , ,..........., , , ,...n n nx x x x x x+ +

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali34

- GRMSia λ la lunghezza del periodosn lo stato del generatore al passo n T la funzione di transizione ⇒ T(sn) = sn+1 , Tλ(s) = s

Ad esempio vogliamo due sequenze distinte di lunghezza Z.

Primo caso: dato s0 genero Z valori, ottengo lo stato sze inizio la nuova sottosequenza usando come seme sz+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.

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali35

Secondo caso: Per ottenere il valore dello stato arbitrario sn+z a partire dallo stato sn si calcola

con

La matrice (Az mod m) viene calcolata una sola volta e viene utilizzata tutte le volte che occorre una nuova sott.za di dimensione z.

( )mod mod modz zn z n ns A s m A m s m+ = =

1 1

0 1 . . 0. . .. . .0 0 . . 1

. .k k

A

a a a−

⎛ ⎞⎜ ⎟⎜ ⎟

= ⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎝ ⎠

1 1

1

( ... )mod mod

n n k n k

n n

x a x a x mX A X m

− −

= + +

=

P. L'Ecuyer, Operations Research, 50, 6 (2002),P. L'Ecuyer, Operations Research, 50, 6 (2002),

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali36

Per grandi valori di z si calcola la matrice (Az mod m)usando l’algoritmo divide et impera:

il n.ro di moltiplicazioni matriciali sarà O (log2z).

( )( )( )

2 2

1

mod mod mod se è parimod

mod mod se è dispari

z zz

z

A m A m m zA m

A A m m z−

⎧⎪= ⎨⎪⎩

Knuth, The art of computer programming (1998)Knuth, The art of computer programming (1998)

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali37

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

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali38

Generatori di numeri casualiI generatori di numeri casuali usano una sorgente non deterministicaEsempio(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.htmhttp://www.idquantique.com/productshttp://www.idquantique.com/products/quantis.htm/quantis.htm

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali

Rumore Termico

39

• 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)

Generazione di numeri casualiGenerazione di numeri casualiGenerazione di numeri casuali

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

40