54
Generatori di numeri casuali Alberto Lusoli www.cash-cow.it Distribuito sotto licenza Creative Common Share Alike Attribution Statistica computazionale

Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

  • Upload
    buingoc

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Generatori di numeri casuali

Alberto Lusoliwww.cash-cow.it

Distribuito sotto licenza Creative Common Share Alike Attribution

Statistica computazionale

Page 2: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

“La generazione dei numeri casuali ètroppo importante per essere lasciata alcaso”

Robert R. Coveyou

Page 3: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Concetti fondamentali

I campi di studio della probabilità e dellastatistica si fondano sul concetto dispazio delle probabilità e variabilecasuale.Quando questi concetti vengonoimplementati in elaboratori nasce ilproblema di simulare variabili casualimediante algoritmi deterministici.

Page 4: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Definizione intuitiva

Un algoritmo RNG (Random NumberGenerator) è un software il cui output èdifficilmente distinguibile dalcomportamento di una variabile"veramente casuale".

Page 5: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Definizione intuitiva

Ovvero, osservando una serie di outputforniti dall'algoritmo non si dovrebberoavere informazioni circa il successivovalore generato.

Page 6: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Quando si utilizzano numerirandom?

Nei linguaggi di programmazione sonopresenti funzioni per la generazione di numericasuali. Tra quelli che abbiamo affrontato inaltri corsi citiamo:

Matlabrand

ANSI Crand()

Page 7: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Processi fisici

Variabili casuali possono scaturireanche dall’osservazione di processifisici come il tempo di decadimentoatomico o l'analisi del thermal noise(disturbo termico) nei semiconduttori.

Page 8: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Processi fisici

I RNG basati su processi fisici hannomolti svantaggi rispetto alla lorocontroparte software: sono difficili darealizzare, sono costosi, lenti e nonsono in grado di riprodurre la stessasequenza di output a partire dalmedesimo stato iniziale.

Page 9: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Processi fisici

Questi metodi sono spesso utilizzatiinsieme a algoritmi RNG per laselezione del seme iniziale (vedi dopo).Rappresentano infatti una fonte dientropia esterna utile per certeapplicazioni dove è frequente ilreseeding, ovvero la reinizializzazionedella sequenza di output (criptologia emacchine da gioco).

Page 10: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Algoritmi RNG e numeripseudo casuali

Centro della nostra analisi sono i software per lagenerazione di numeri casuali (abbreviati in RNG)Si tratta di algoritmi deterministici in grado digenerare un output avente le stesse proprietàstatistiche di una sequenza di numeri generata daun processo casuale.

Page 11: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Numeri Pseudo casuali

L’output fornito, come accennato inprecedenza, imita ma non èpropriamente una variabile casuale. Perquesto motivo è più corretto parlare dinumeri pseudo-casuali (PRNG,dall'inglese pseudo-random numbersgenerator).

Page 12: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Caratteristiche dei numeripseudo-casuali

Una sequenza di numeri pseudo-casuali deve soddisfare, al minimo, leseguenti proprietà statistiche:

• Distribuzione• Indipendenza

Page 13: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Distribuzione

Distribuzione degli output secondo unafunzione di distribuzione predefinita f(x):di solito si richiede una distribuzioneuniforme su un intervallo specificato(equidistribuzione)

Page 14: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Indipendenza

Indipendenza tra elementi successividella sequenza, ovvero tra 2 outputsuccessivi

Page 15: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Esempio

La sequenza1, 2, 3, 4, 5, 6, 7, 8, 9, 10

Non si può definire pseudo-casualeE’ certamente equidistribuita sull'intervallo[1,10], ma le coppie di elementi successivinon sono uniformemente distribuitesull'insieme di tutte le possibili coppie dinumeri da 1 a 10, ma sono tutte della forma(n,n+1). Non è quindi soddisfatto il criterio diindipendenza

Page 16: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Provare la casualità

Il problema principale dei RNG è chel'output fornito non è propriamente unavariabile casuale ma unaapprossimazione di una variabilecasuale con distribuzione uniforme edindipendente

Page 17: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Provare la casualità

Se l’output è, come avviene spesso,una sequenza di bit con valori 0 o 1,ogni bit deve assumere con ugualeprobabilità 0 o 1 e tutti i bit devonoessere tra di loro indipendenti.

Page 18: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Provare la casualità

Questo comportamento desiderato nonpuò essere provato a ex-ante ma deveessere testato ex-post mediante teststatistici che provino che la variabile inosservazione abbia realmente ilcomportamento casuale desiderato.

Page 19: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

RNG in formula

Indipendentemente dal funzionamentoparticolare di ciascun algoritmo, tutti gliRNG possono essere descritti comecomposti da:

!

(",µ, f ,U,g)

Page 20: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

RNG in formula

!

" :

!

U :

!

g :

!

µ :

!

f :

Insieme finito di stati (spazio degli stati)

Distribuzione di probabilità utilizzata per selezionaredall’insieme lo stato iniziale (detto Seme)

Funzione di transizione che, partendo da determina . In formula:

Spazio degli output, solitamente comprende i valoritra 0 e 1Funzione di output. Dato uno stato

Gli output sono i Numeri casuali prodotti dal RNG

!

"

!

s0

!

si

!

si+1

!

si+1 = f (si)

!

si

!

ui = g(si)"U

!

u0,u1,u2...

Page 21: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Periodo massimo di un RNG

Dato che l’insieme degli stati è finito,per qualsiasi seme (stato iniziale)esisterà un valore tale per cui

!

"

!

s1

!

l

!

si+ l = s

i

Page 22: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Periodo massimo di un RNG

Dato che le funzioni di transizione e dioutput e sono deterministiche,allora anche per l’output vale la formula:

!

ui+ l = u

i!

f

!

g

Page 23: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

…a parole

Significa che, partendo da un qualsiasi statoiniziale, dopo un certo numero di iterazioni, ilsistema torna allo stato iniziale, ovvero alseme.Quindi, tutti gli algoritmi RNG generanosequenze finite di numeri casuali e dopo unnumero di iterazioni tornano allo statoiniziale.

!

l

!

l

Page 24: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Proprietà del periodo

Il valore di l più piccolo per cui èavviene il ritorno allo stato iniziale èchiamato periodo del RNG ed èindicato con . è minore o uguale a , ovveroall'insieme finito di stati (spazio deglistati).!

"

!

"

!

"

Page 25: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Proprietà del periodo

Se gli stati sono rappresentati in un computerda una stringa di k bit, allora:

Buoni RNG hanno valore di tendente a . dipende anche dal seme.RNG efficienti hanno uguale per tutti ipossibili stati iniziali.!

" # 2k

!

"

!

"

!

"

!

"

Page 26: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Altre caratteristiche dei RNG

Criteri di qualità utilizzati per valutare laqualità di un RNG sono:

• Lunghezza del periodo: periodi lunghi, prossimi a , assicurano che il sistema non entri in cicli prevedibili.

!

"

Page 27: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Altre caratteristiche dei RNG

• Efficienza: buoni RNG devono utilizzare unaquantità ridotta di risorse (memoria)

• Ripetibilità: partendo dallo stesso seme,devono essere in grado di riprodurre la stessasequenza di numeri casuali

• Portabilità: devono essere indipendenti dalcontesto hardware software

Page 28: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Alcuni esempi di RNG

Analizziamo ora 2 famiglie di RNG, trale più utilizzate.

• Generatori lineari congruenziali• Mersenne Twister

Page 29: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Generatori lineari congruenziali

I generatori di numeri casuali di tipolineare congruenziale sono tra i piùsemplici e più diffusi.La formula base per questa famiglia diRNG è del tipo:

!

si+1 = a " s

i+ c(modm)

Page 30: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

…nel dettaglio

!

si+1

!

m

!

a

!

c

: stato al tempo

!

i+1

!

si

: stato al tempo

!

i

: parametro Moltiplicatore

: parametro Incremento. Se , allora l’RNG è detto Moltiplicativo

!

c = 0

: numero di stati possibili

!

si+1 = a " s

i+ c(modm)

Page 31: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Esempio

Poniamo i valori dei parametri pari a:

!

a = 3

!

c = 6

!

m = 5

!

s0

=1

!

"

!

!

si+1 = 3 " s

i+ 6(mod5)

Page 32: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Esempio

!

s0

=1

Page 33: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Esempio

!

s1 = 3 "1+ 6(mod5) = 4

!

s0

=1

Page 34: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Esempio

!

s1 = 3 "1+ 6(mod5) = 4

!

s0

=1

!

s2 = 3 " 4 + 6(mod5) = 3

Page 35: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Esempio

!

s1 = 3 "1+ 6(mod5) = 4

!

s0

=1

!

s2 = 3 " 4 + 6(mod5) = 3

!

s3 = 3 " 3+ 6(mod5) = 0

Page 36: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Esempio

!

s1 = 3 "1+ 6(mod5) = 4

!

s0

=1

!

s2 = 3 " 4 + 6(mod5) = 3

!

s3 = 3 " 3+ 6(mod5) = 0

!

s4 = 3 " 0 + 6(mod5) =1

Page 37: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Esempio

!

s1 = 3 "1+ 6(mod5) = 4

!

s0

=1

!

s2 = 3 " 4 + 6(mod5) = 3

!

s3 = 3 " 3+ 6(mod5) = 0

!

s4 = 3 " 0 + 6(mod5) =1

!

s5 = 3 "1+ 6(mod5) = 4

Page 38: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Esempio

!

s1 = 3 "1+ 6(mod5) = 4

!

s0

=1

!

s2 = 3 " 4 + 6(mod5) = 3

!

s3 = 3 " 3+ 6(mod5) = 0

!

s4 = 3 " 0 + 6(mod5) =1

!

s5 = 3 "1+ 6(mod5) = 4

Periodo di lunghezza 4

!

4 < 5

" < m

" < #

in simboli:

riprendendo la formula generale:

Page 39: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Pro e contro dei RNG linearicongruenziali

Pro• Semplici da implementare• Velocità di esecuzione

Contro• Sequenza periodica di periodo al più pari a m• Ogni valore di è completamente

determinato dai 4 parametri• Correlazione tra chiamate successive del

generatore!

"

!

a,c,m,s0

Page 40: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Cosa si intende per correlazione?

Se k numeri consecutivi della sequenzavengono utilizzati come coordinate di punti inuno spazio k-dimensionale, se i numerifossero assolutamente non-correlati, i puntitenderebbero a coprire tutto lo spazio.In realtà i punti vanno a cadere in “piani” (k-1)dimensionali, il cui numero è al massimo:

!

m

1

k

Page 41: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Correlazione

Consideriamo ad esempio k=2. Utilizziamoogni coppia di numeri pseudo-casualigenerati da un RNG come coordinate di puntiall’interno di un piano cartesiano.Un buon RNG dovrebbe dar luogo ad ungrafico dove i punti sono dispostiuniformemente nello spazio (figura di sinistra)

Page 42: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Correlazione

Page 43: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Mersenne Twister

RNG in grado di generare numeri casuali diqualità elevata ed in tempi ridotti.

Sviluppato nel 1997 da Makoto Matsumoto eTakuji Nishimura.

Page 44: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Mersenne Twister

Tra i vantaggi di questo RNG vi sono:

• Periodo lungo: pari a• Correlazione: Correlazione trascurabile tra

valori successivi della sequenza• Velocità: La velocità di generazione è

paragonabile a quella della funzione Rand()dell’ ANSI C

• Efficienza: Utilizzo delle risorse ridotto

!

219937

Page 45: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Valutare la qualità di un RNG

Come accennato in precedenza, pervalutare la qualità di un RNG ènecessario studiare le proprietàstatistiche delle sequenze generate.

Page 46: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Test di uniformità o del

Test in grado di valutare l’uniformitàdella distribuzione di una sequenza divariabile discrete.

!

" 2

Page 47: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Test di uniformità o del

!

" 2

!

k : numero di eventi possibili

!

E1,E

2,...,E

k : evento 1, evento 2, …, evento k

!

p1, p

2,..., pk : probabilità evento 1, probabilità evento 2, …,

probabilità evento k

!

n : numero di esperimenti

!

y1,y

2,...,yk : numero di volte che si realizza l’evento 1,

numero di volte che si realizza l’evento 2, , …, numero di volte che si realizza l’evento k

Page 48: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Test di uniformità o del

!

" 2

Quindi, la sommatoria di tutti gli eventi che si realizzano sarà pari al numero di esperimenti:

!

yi = ni=1

k

"

Introduciamo la variabile V, definita come:

!

V =i=1

k

"(yi # npi)

2

npi

Page 49: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Per verificare l’uniformità di un generatore nelfornire numeri random distribuitiuniformemente in [0,1]:

• Tra 0 e 1, si creano k-sottointervalli diampiezza

• Si genera un gran numero di istanze dellav.a. uniforme e si conta per ogni intervallo ilnumero di istanze che sono caduteall’interno dell’intervallo

Test di uniformità o del

!

" 2

!

yi!

1k

Page 50: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Poichè il generatore è uniforme si ha

!

pi = 1k

Page 51: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Si calcola qundi il valore di V utilizzando laformula descritta in precedenza:

Se il generatore è efficace, la variabile V risulta avere distribuzione con

gradi di libertà.

!

" 2

!

k "1

Test di uniformità o del

!

" 2

!

V =i=1

k

"(yi # npi)

2

npi

Page 52: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Test di uniformità o del

!

" 2

Il test è superato se, fissato un certo valore critico

V non risulta maggiore a tale valoreSolitamente si pone

!

"1#$

2

!

" = 0.05

Page 53: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia
Page 54: Statistica computazionale - cash-cow.it · entropia esterna utile per certe applicazioni dove è frequente il reseeding, ovvero la reinizializzazione della sequenza di output (criptologia

Riferimenti web e bibliografia

• Computational statistic• Marsenne Twister Home page

http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html

• http://www.cs.unibo.it/~donat/random1.pdf