Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
CAPITOLO VI
6. - Simulazione
Su una definizione rigorosa della Simulazione esistono pareri discordi. Preferiamo dare
una definizione implicita, riassumendo ciò che ne costituisce usualmente il contenuto.
Fare una simulazione significa:
1) Osservare un sistema fisico;
2) Costruire un modello che riproduca le caratteristiche e le regole di
funzionamento essenziali del sistema in esame;
3) Condurre esperimenti sul modello, ossia dedurre, in modo economico ed in
tempo ridotto, il comportamento del sistema reale sotto condizioni prefissate,
realizzando tramite il modello diversi campionamenti del sistema in esame;
4) Analizzare i risultati, valorizzando le alternative di decisione e ricavando
informazioni sui legami tra le decisioni studiate e le prestazioni del sistema.
Quando è impossibile o troppo costoso osservare direttamente il comportamento e
l'evoluzione di un sistema reale, o qualora siano richieste informazioni su un sistema
ancora in fase di progetto, una tecnica usuale è quella di ricorrere a sperimentazioni in
scala ridotta su sistemi pilota.
Spesso però non è possibile, per ragioni tecniche o di costo, fare un modello in scala
ridotta: in tal caso si supplisce con opportune tecniche di Ricerca operativa ed il sistema
viene riprodotto in un modello matematico di tipo deterministico che permette ancora di
studiarne ed ottimizzarne il comportamento.
Vi sono infine casi in cui il sistema osservato è troppo complesso per poterlo descrivere
in termini matematici, o casi in cui, pur essendo possibile in teoria la costruzione di un
modello matematico soddisfacente, la interazione fra le variabili in gioco rende sterili i
risultati, in tali circostanze la Simulazione è l'unico potente strumento di indagine
applicabile e pur non essendo una tecnica ottimizzante fornisce risposte con margine di
errore controllabile e quindi contenibile entro la approssimazione richiesta.
72
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
6.1 - Cenni storici
La Simulazione è una evoluzione e generalizzazione del problema del "Random walk".
L'esempio classico di "Random walk" è un modello che riproduce gli spostamenti
casuali di un ubriaco, inizialmente fermo presso un lampione: il modello permette di
determinare con una certa significatività la distanza media dal punto di partenza dopo
un numero n di passi fatti a caso, mediante la ricostruzione di molti itinerari possibili e
la loro valutazione probabilistica.
Durante la II guerra mondiale Ulam e Von Newmann generalizzarono questa idea,
applicandola al Calcolo Numerico e ad altri problemi pratici, e la perfezionarono nel
cosiddetto metodo di Montecarlo.
Un esempio di applicazione del metodo di Montecarlo è il calcolo di un integrale
definito:
b
∫ f ( x)dx
a
dove f(x) è una funzione integrabile in (a, b).
Supponiamo di potere rappresentare la funzione come in figura
Supponiamo di conoscere un valore F tale che, per a < x < b sia F >f (x); pertanto è un
valore maggiore o uguale al massimo relativo di f(x) in (a, b).
Supponiamo di suddividere sia l'intervallo (0, f) che l'intervallo (a, b) in un certo
numero di punti intermedi, fitti adeguatamente.
73
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
Supponiamo di avere suddiviso l'intervallo (0, F) mediante N1 punti, e (a, b) mediante
N2 punti. Supponiamo inoltre di scrivere ciascuno dei valori dei punti di separazione e
dei punti di estremo su una tessera e di mettere le tessere risultanti in due urne.
La prima conterrà N1 + 2 tessere relative ai punti dell'intervallo (0, F), la seconda N2 + 2
tessere relative all'intervallo (a, b).
Con riferimento ad una delle due urne, se le tessere in essa contenuta sono uguali tra
loro, ciascuna di esse ha una uguale probabilità "a priori" di essere estratta da un
operatore bendato.
Tale operatore ha il compito di volta in volta di estrarre una tessera da ciascuna delle
due urne. Lettone i valori rispettivamente segnati, le tessere estratte vengono
reimmesse nelle urne di origine, affinché vengano ripristinate le condizioni iniziali.
Si ha così a disposizione un procedimento che di volta in volta ci fornisce una coppia di
valori casuali (x , y ) tali che 0 ≤ y ≤ F e a ≤ x ≤ b .
Ciascuna di tali coppie (x , y ) generate casualmente viene ad essere sottoposta al
seguente test di accettazione:
Dato x si calcola f ( x ); se risulta y ≤ f ( x ) allora la coppia (x , y ) , rappresentativa di un
punto sottostante la curva y = f (x), viene accettata e si contabilizza, se invece è
y > f ( x ) , allora la coppia (x , y ) è rappresentativa di un punto del rettangolo che ricade
sopra la curva.
Nel corso delle estrazioni, detto E il numero corrente delle estrazioni effettuate ed A il
numero di punti accettati, calcoliamoci di volta in volta il rapporto A/E < 1.
Nei primi ciclo tale valore subirà delle oscillazioni da una estrazione all'altra, ma dopo
un numero sufficientemente elevato di prove esso tenderà a stabilizzarsi intorno ad un
valore limite poco variabile da una estrazione all'altra.
Ottenuta una sufficiente stabilizzazione di A/E potremo dire, sulla base della relazione
di proporzionalità:
 A  S ( sottesa da f ( x ))
 =
S ( rett .golo )
 E
che, essendo
b
S ( sottesa da f ( x )) = ∫ f ( x ) dx
a
e
S (rettangolo) = F · (b-a)
fornisce:
b
A
∫ f (x ) dx =  E 
a
⋅ F ⋅ (b − a )
0
Per esemplificare, se su E = 1000 estrazioni di coppie , se ne sono potute accettare A =
897, si ha:
b
897
∫a f (x ) dx = 1000 (b − a ) ⋅ F = 0,897 (b − a ) ⋅ F
Con il che si è calcolato approssimativamente l'integrale ricercato.
74
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
6.2 - Problemi di altra natura
Il metodo Montecarlo, nato come si è visto, per soddisfare l'esigenza di eludere le
difficoltà del Calcolo Numerico in quei casi di difficile approccio, e in cui era
sufficiente una certa approssimazione, è stato poi applicato anche a problemi di altra
natura (specie nel campo economico ed organizzativo), laddove è presente la necessità
di dare una stima statistica a variabili aleatorie.
Facciamo subito un esempio per chiarire le applicazioni del metodo a questo tipo di
problemi.
6.2.1. - Problema del giornalaio (o della determinazione del lotto
economico di magazzino).
Un giornalaio vende giornali a € 1,50 /copia. Il suo guadagno è di € 0,25/copia.
Le copie non vendute giorno per giorno non possono essere rese.
Il numero di copie richieste al giorno non è costante ma è soggetto ad oscillazioni non
prevedibili. Se egli al mattino ritira in agenzia un numero di copie insufficiente, allora
ha un mancato guadagno dl € 0,25 per ogni copia richiesta dopo che ha esaurito quelle
ritirate. Per ogni copia ritirata ma non venduta egli registra invece una perdita di € 1,25.
Dopo una esperienza di vendita di 50 giorni, il giornalaio si pone il problema di
determinare il numero di copie da ritirare ogni giorno in agenzia, che gli garantisca il
conseguimento del massimo profitto in un certo periodo di tempo a venire.
Nei 50 giorni le richieste hanno dato i risultati riportati in tabella:
Nr. Copie Rich.
0
1
2
3
4
5
6
7
8
9
10
11 o più
Nr. Giorni
1
1
3
6
10
11
9
3
3
2
1
0
50
In istogramma:
Il giornalaio ha ragione di credere che
questi
dati
siano
sufficientemente
significativi e che anche nel futuro
immediato l'andamento delle richieste non
se ne scosterà.
Assunta questa tabella come base statistica
per la previsione, nelle considerazioni che
seguono ci serviremo della tabella come di
12
10
8
6
4
2
0
0 1 2 3 4 5 6 7 8 9 10 11
75
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
una legge di probabilità, cioè tratteremo le frequenze registrate come delle probabilità.
Ad es.:
1) La probabilità di vedere richieste 3 copie in un giorno varrà: 6/50 = 0,12.
2) Quella di vedere più di 7 copie:
3
2
1
6
+
+
=
= 0,12
50 50 50 50
Indicato con Ri il numero di copie richieste in un dato giorno i e con C il numero di
copie che decide di ritirare ogni giorno, il profitto (o perdita) che egli registra nel giorno
i si può valutare in base alle seguenti considerazioni:
A) Se è Ri > C, a fine giornata si ha un utile pari a a Pi = 0,25 · C;
B) Se è Ri < C allora a fine giornata si ha Pi = 0,25·Ri -1,25 (C-Ri) = 1,50 Ri – 1,25 C
Fatto riferimento ad un periodo futuro di 100 giorni (ad esempio), il problema è quello
di determinare il numero di copie da acquistare giorno per giorno, che consenta di
ottenere il massimo profitto.
La maniera con cui si procede è la seguente:
Prefissato un certo numero C di copie ritirate, si ricostruisce una "possibile" sequenza
del numero di copie richieste nei 100 giorni a venire, quale è possibile desumere
assumendo la distribuzione probabilistica in istogramma, e servendosi di un generatore
di numeri casuali: ad una certa sequenza di numeri casuali corrisponde una sequenza di
valori casuali di richieste, la quale ci consente di "simulare" il loro futuro andamento,
di ricostruirne una storia possibile.
E' da osservare che, in questo caso, la generazione di valori casuali potrebbe essere
anche ottenuta in maniera diretta prendendo 50 palline e scrivendo su di esse il nr.0 (0
copie richieste), su una di esse il valore 1, su tre di esse il valore 2 e così via: in tal
modo ciascuna pallina corrisponde ad una possibile giornata di vendita.
Se vogliamo far uso del solito "generatore" (urna con palline numerate da 1 a 1.000)
allora dobbiamo associare a ciascuna classe di numero di copie richieste in un giorno un
certo intervallo di "numeri casuali" che le corrisponde.
Tale intervallo deve essere proporzionale alla frequenza relativa di tale classe rispetto
alle altre.
Così avremo:
Nr. Copie
Freq.
richieste Assolute
0
1
2
3
4
5
6
7
8
9
10
11 o più
1
1
3
6
10
11
9
3
3
2
1
0
Freq.
Relativ.
1/50
1/50
3/50
6/50
10/50
11/50
9/50
3/50
3/50
2/50
1/50
0
1÷1.000 nr.
Casuali
asssociati
1÷20
21÷40
41÷100
101÷220
221÷420
421÷640
641÷820
821÷880
881÷940
941÷980
981÷1.000
1÷50 nr.
Casuali
associati
1
2
3÷5
6÷11
12÷21
22÷32
33÷41
42÷44
45÷47
48÷49
50
76
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
Naturalmente anzicchè disporre di un'urna con 1.000 palline, potremo disporre di
un'urna con sole 50 palline, una per ciascun giorno. Operando come detto, si
estraggono 100 numeri casuali che ci consentono di "simulare" le richieste quali
"possono" verificarsi nei 100 giorni a venire, in tal modo perveniamo alla
determinazione di 100 valori casuali di Ri. A questo punto possiamo calcolare i profitti
Pi nell'ipotesi di C=1, di C=2, C=3, C = 4 e così via. La tabella che ne risulta è del tipo:
Giorno
Num.
simulato Estrattto
Valore
casuale
associato
8
4
6
5
1
6
6
5
5
7
1
891
2
221
3
650
4
631
5
28
6
641
7
815
8
503
9
491
10
838
…
100
Totale
Media Giornal. Profitti
Nr. Domande non Soddisf.
% Domande non soddisf.
Pi nell'ipotesi di
C=2
+ 0,50
+ 0,50
+ 0,50
+ 0,50
- 1,00
+ 0,50
+ 0,50
+ 0,50
+ 0,50
+ 0,50
C=3
C=4
C=5
+ 0,75
+ 0,75
+ 0,75
+ 0,75
- 2,25
+ 0,75
+ 0,75
+ 0,75
+ 0,75
+ 0,75
+ 1,00
+ 1,00
+ 1,00
+ 1,00
- 3,50
+ 1,00
+ 1,00
+ 1,00
+ 1,00
+ 1,00
+ 1,25
- 0,25
+ 1,25
+ 1,25
- 4,75
+ 1,25
+ 1,25
+ 1,25
+ 1,25
+ 1,25
+ 45,50 + 48,75
+ 4,55 + 4,875
301
218
59,1
42,8
+ 48,00
+ 4,80
140
27,5
+ 18,75
+ 1,875
78
15,3
C = 3 ⇒ Pi = € 48,75
ottimo
C = 4 ⇒ Pi = € 48,00
non si discosta troppo dall'ottimo.
Una domanda che ci si può porre è: fino a che punto sono attendibili i valori ottenuti?
In effetti è solo estendendo il numero di cicli che aumenta la probabilità che le risposte
ottenute siano attendibili (all'aumentare del numero di cicli le medie dovrebbero
assumere valori più stabili e quindi dovrebbe essere possibile trarre conclusioni più
fondate).
Nel problema appena analizzato l'unica grandezza aleatoria considerata è stata la
richiesta giornaliera di giornali. E' evidente che la situazione prospettata, è
semplificativa rispetto alla realtà nella quale si possono avere ritardi nelle consegne; in
cui il cliente non soddisfatto due o tre volte può essere perduto per sempre e così via.
Se volessimo tener conto dei vari fattori casuali che possono verificarsi e che possono
incidere sulle vendite, dovremmo allora servirci per ciascuno di essi di uno (o più)
diagrammi di campionamento dai quali estrarre, in corrispondenza di numeri casuali, i
valori casuali delle grandezze aleatorie in gioco. In tal caso le grandezze che andremo a
prendere in considerazione (profitto, numero di richieste inevase ecc.) per decidere circa
il valore di C da assumere si determinano per effetto del concorso di più fattori
aleatori, ciascuno dei quali è indipendente dagli altri; sarà campionato l'uno
indipendentemente dagli altri.
77
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
E' per questo tipo di problemi che può allora parlarsi di "simulazione" basata su metodi
di campionamento Montecarlo relativo alle varie grandezze aleatorie in gioco.
6.2.2. - Il problema delle pratiche
Un ufficio riceve ogni giorno un certo numero n di pratiche da sbrigare nel giorno
stesso. Questo numero è una variabile aleatoria della quale si conosce l’andamento nei
due mesi precedenti (50 giorni lavorativi in totale) che viene riassunto nella tabella che
segue:
Figura 4
N. delle pratiche ricevute in
un giorno
N. dei giorni
Frequenza (%)
560
570
580
590
600
610
620
1
7
13
16
9
3
1
0,02
0,14
0,26
0,32
0,18
0,06
0,02
Ed è lecito presumere che in futuro, gli arrivi avverranno ancora con le stesse frequenze.
Altrettanto può dirsi per un’altra variabile aleatoria, che rappresenta il numero delle
pratiche sbrigabili da un singolo individuo durante una giornata lavorativa (8 ore). Detto
numero dipende da un insieme di fattori quali la complessità delle pratiche, le
condizioni psico-fisiche dell’impiegato, ecc.. Si possono ritenere sufficiente le
informazioni (pure relative al passato) riassunte nella seguente tabella:
Figura 5
N. delle pratiche sbrigate in
un giorno da ogni impiegato
N. dei giorni
Frequenza (%)
43
1
0,02
44
3
0,06
45
5
0,10
46
9
0,18
47
12
0,24
48
8
0,16
49
5
0,10
50
4
0,08
51
2
0,04
52
1
0,02
Il costo orario di ciascun impiegato è di € 2,50 per ore lavorative e di € 3,50 per ore
straordinarie.
Si vuole determinare il numero degli impiegati che realizza il costo minimo giornaliero
di esercizio per l’ufficio.
Allo scopo, eseguiremo una gestione simulata per un certo numero di giorni facendo
coppie di estrazioni da un’urna contenente 50 palline numerate da 00 a 49.
78
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
La prima estrazione di ciascuna coppia simulerà il numero di pratiche ricevute in un
dato giorno dall’ufficio secondo la seguente legge in corrispondenza (che tiene conto
delle frequenze riportate nella fig. 4).
Numeri estratti N. Pratiche
00
560
da 01 a07
570
da 08 a 20
580
da 21 a 36
590
da 37 a 45
600
da 46 a 48
610
49
620
La seconda estrazione riguarderà invece il numero di pratiche sbrigate in quel giorno da
un impiegato secondo la seguente legge associativa.
Numeri estratti
00
da 01 a03
da 04 a 08
da 09 a 17
da 18 a 29
da 30 a 37
da 38 a 42
da 43 a 46
da 47 a 48
49
N. Pratiche
43
44
45
46
47
48
49
50
51
52
Eseguire 50 estrazioni e calcolare i costi pertinenti ad una gestione con 9, 10, 11, 12, 13
individui e determinare il costo giornaliero medio minimo.
9 impiegati
10 impiegati 11 impiegati 12 impiegati 13 impiegati
costo ore ord. costo ore ord. costo ore ord. costo ore ord. costo ore ord.
Giornaliere
Giornaliere
Giornaliere
Giornaliere
Giornaliere
€ 180,00
€ 200,00
€ 220,00
€ 240,00
€ 260,00
I numero II numero
N.
N.
Straordinari
Straordinari
estratto estratto pratiche pratiche Ore Costi Ore costi
ricevute che un
imp. può
sbrigare
Straordinari
Ore costi
Straordinari
Ore costi
Straordinari
Ore costi
Totale costi ordinari
Totale costi straordinari
Totale costi
COSTO MEDIO
GIORNALIERO
79
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
6.3. - Generazione di variabili aleatorie per la simulazione
Abbiamo già visto che generalmente un modello di simulazione è un modello
intrinsecamente stocastico. Infatti, poiché i valori usati per le variabili di ingresso, per le
variabili di stato iniziale e per i parametri sono decisi a partire dal sistema reale
attraverso una serie di misurazioni fisiche, ogni valore appartiene in effetti a una
distribuzione di probabilità. Questo, sia perché la natura del sistema reale è
generalmente probabilistica, sia perché ogni operazione di misura è di per sé affetta da
un errore di natura stocastica.
In considerazione dei processi stocastici che involgono sia le variabili casuali discrete
che continue, definiremo una funzione F(x), chiamata funzione di distribuzione
cumulativa di x, che indica la probabilità che una variabile casuale X assuma un valore
≤ x. Se la variabile random è discreta, x assume valori specifici ed F(x) è una funzione a
scalini. Se F(x) è continua nel dominio di x, è possibile differenziare questa funzione e
definire
dF ( x )
f(x) =
dx
[6.1]
La derivata f(x) è chiamata funzione densità di probabilità. Infine, la funzione
cumulativa di distribuzione può essere definita matematicamente come
x
F(x) = P(X≤ x) = ∫−∞ f (t ) dt
[6.2]
dove F(x) è definita nell’intervallo 0 ≤ F(x) ≤ 1, ed f(t) rappresenta il valore della
funzione densità di probabilità di una variabile X quando X=t.
Le variabili random uniformemente distribuite giocano un ruolo fondamentale nella
generazione di variabili random ottenute da altre distribuzioni di probabilità.
Indicheremo le variabili uniformi con r, con 0 ≤ r ≤ 1, ed F(r) = r.
Nel seguito esamineremo una serie di metodi per generare variabili random
uniformemente distribuite nell’intervallo (0,1). Questi numeri sono chiamati numeri
pseudo-casuali perché, sebbene essi siano generati con formule ricorsive completamente
deterministiche con un computer, le loro proprietà statistiche coincidono con le
proprietà dei numeri generati con un meccanismo ideale che sceglie in maniera
indipendente i numeri in un intervallo (0,1), e con tutti i numeri che hanno la stessa
probabilità di essere estratti. Non appena questi numeri pseudo-casuali superano una
serie di test, possono essere utilizzati veramente come numeri casuali, anche se non lo
sono.
Se vogliamo generare variabili casuali xi da una particolare popolazione statistica la cui
funzione di distribuzione sia data da f(x), dapprima otteniamo una funzione cumulata di
distribuzione F(x). Poiché F(x) è definita nell’intervallo 0-1 possiamo generare numeri
casuali uniformemente distribuiti e porre F(r) = r. E’ chiaro che x è univocamente
determinato dalla relazione r = F(x). Segue perciò, che per ogni particolare valore di r,
diciamo r0 , possiamo generare, se è possibile trovare il valore di x, nel caso di x0 ,
corrispondente ad r0 , mediante la funzione inversa di F, se è nota,
x0 = F-1 (r0 )
[6.3]
-1
dove F (r) è la trasformazione inversa di r nell’intervallo nel dominio di x.
Possiamo riassumere questo metodo matematicamente dicendo che, se generiamo
numeri uniformemente distribuiti in corrispondenza di un Dato F(x),
80
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
r = F(x) =
∫
x
−∞
f ( t ) dt
[6.4]
allora
P(X≤x) = F(x) = P[r≤ F(X)] = P[F-1 ( r ) ≤ x]
E, di conseguenza, F-1 ( r ) è una variabile che ha f(x) come sua funzione densità di
probabilità. Questa procedura è chiamata metodo della trasformazione inversa.
Forse la più semplice funzione continua densità di probabilità è quella che è costante in
un intervallo (a,b) ed è 0 altrove.
Questa funzione densità di probabilità definisce ciò che è noto come distribuzione
uniforme o rettangolare. Il principale valore della distribuzione uniforme per le tecniche
di simulazione è la sua semplicità ed il fatto che può essere usata per generare variabili
casuali da numerose altre distribuzioni di probabilità.
Ogni modello va pertanto usato introducendovi valori estratti da distribuzioni di
probabilità, e la simulazione avrà luogo attraverso il ricorso a tecniche Monte Carlo per
la generazione degli ingressi e dei parametri del sistema.
6.3.1. Numeri casuali a distribuzione uniforme
Una distribuzione uniforme (o rettangolare) è quella in cui una va riabile x può assumere
con eguale probabilità uno qualsiasi dei valori compresi in un intervallo a ≤x ≤ b.
Figura 6.15 Densità uniforme
Figura 6.16 Distribuzione cumulativa uniforme
La funzione densità f(x) ha la forma di figura 6.15,
con
f(x) = 1/(b - a) per a ≤ x ≤ b
ed
f(x) =0 altrove;
cioè è costante sull'intero intervallo a, b.
Qui X è una variabile casuale definita nell’intervallo (a,b).
La fig. 6.15 riporta il grafico della distribuzione uniforme. La distribuzione cumulata
F(x), per una variabile casuale uniformemente distribuita X è data da
x 1
dt = x − a 1
F(x) = ∫a
0 ≤ F(x) ≤ 1
[6.5]
b−a
b −a
1
x
dx è uguale a
+ C. Per trovare il valore della costante di integrazione
b −a
b−a
C, notiamo che quando x=a, F(x)=0. Sostituendo questi valori nella equazione precedente troviamo
−a
x
a
x −a
a
+ C = 0 e quindi C =
, da cui
F(X) =
−
=
.
b−a
b − a b − a b −a
b−a
1
Si ricordi che ∫aX
81
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
Per simulare una distribuzione uniforme in un dato dominio (a,b) dobbiamo
innanzitutto ottenere la trasformazione inversa per la formula precedente, in accordo
con la relazione x0 = F-1 (r0 )
X= a+ (b-a) r
0≤r≤1
[6.6]
Una volta generata una serie di numeri pseudocasuali corrispondenti al range delle
probabilità cumulate, cioè variabili casuali uniformi definite nel range 0-1. Ogni
numero casuale r determina univocamente una variabile x uniformemente distribuita.
Una spiegazione grafica servirà forse a spiegare questa affermazione La figura 6.16
illustra il fatto che ogni valore generato di r è associato con uno ed un sol valore di x.
Per esempio, il valore specifico della funzione di distribuzione cumulata in r0 fissa il
valore di x a x0 .
Ovviamente questa procedura può essere ripetuta quante volte si vuole, generando
ogni volta un nuovo valore di x.
La funzione di distribuzione cumulativa F(x) ha la seguente espressione:
X
1
x−a
F(X) = prob [a ≤x ≤ X] = ∫
dx =
per a ≤x ≤ b
[6.7]
−∞ b − a
b−a
=0
=1
per x<a
per x>b
come mostrato nella figura 6.16.
Nella discussione che segue considereremo la distribuzione uniforme con a = 0,
b= l e cioè definita da
f(x) =1
=0
0 ≤x ≤ 1
altrove.
La x è una variabile reale che si assume possa prendere uno qualsiasi degli infiniti
valori reali compresi tra a e b. Quando si usa un calcolatore ciò è impossibile perché
i valori che può assumere una variabile sono tutti quelli ammessi dalla lunghezza
della parola che è appunto rappresentata con un numero finito di bit. In pratica quindi
occorrerà subire una certa granularità, che varia col tipo di elaboratore che si
adopera.
Esistono molti processi fisici che possono essere considerati come generatori di
numeri a caso uniformemente distribuiti. Giudicare se un processo è o meno un
processo casuale equivale a stabilire se le predizioni sul suo comportamento futuro non
possono o possono essere migliorate dalla conoscenza del comportamento passato.
Esiste una lunga storia di costruzioni di macchine per generare numeri a caso, nate
con la necessità di costruire modelli fisici per la simulazione di sistemi stocastici. Le
prime macchine di un certo rilievo furono costruite per studiare la risposta delle
centrali telefoniche alla variazione fluttuante della domanda.
82
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
Successivamente, ne furono costruite altre per lo studio della congestione del
traffico. Le macchine venivano usate per produrre tabelle di numeri a caso che gli
analisti potevano poi usare nello studio dei sistemi. Le macchine di tipo meccanico
furono basate sul principio di un disco diviso in settori eguali e numerati, che veniva
fatto ruotare da un motore e arrestato dopo un tempo arbitrario, accettando come
numero a caso il numero del settore che si arrestava in corrispondenza di un indice. Le
macchine di tipo elettronico sono basate su un generatore di impulsi pilotato da una
sorgente di rumore (agitazione termoionica, sorgente radioattiva ecc.) in modo da
avere impulsi di periodo casuale. Gli impulsi vengono contati da un contatore decimale
che conta ciclicamente da 0 a 9 e viene letto a intervalli fissi. Viceversa, si può usare un
generatore d'impulsi periodici e un contatore arrestato a intervalli random. Usando n
sorgenti di rumore e altrettanti contatori in parallelo, è possibile ottenere numeri
random di n cifre decimali.
Un metodo più classico è il metodo dell'urna: dischetti numerati sono messi in
un'urna e mescolati prima di ogni estrazione. Ogni dischetto estratto, dopo esser stato
letto è reintrodotto nell’urna. Molti esperimenti hanno mostrato che questo metodo ha
discrete caratteristiche random, come vedremo più avanti richiamando l'esempio che
segue. Un insieme di 1000 dischi numerati da 1 a 10 (100 per tipo) è preparato ed
estratto con le regole dette. I risultati di una prova di 5000 estrazioni sono stati i
seguenti:
Numero
N. volte estratto (x)
(x- x )2
1
511
121
2
462
1444
3
382
13924
4
570
4900
5
596
9216
6
500
0
7
576
5776
8
411
7921
9
508
64
10
484
256
5000
43622
Il numero medio di estrazioni attese per ciascun tipo di disco è x =500.
Si nota invece che i dischetti di tipo 4, 5, 7 sono stati estratti in numero molto
maggiore alla media, e quelli di tipo 3 e 8 in numero molto inferiore. Lo scostamento
dalla media si riflette nella grandezza (x - x )2 che sarà usata in seguito per misurare la
bontà del meccanismo di estrazione.
La Rand Corporation ha pubblicato una tavola di 1 milione di numeri casuali del
valore da 0 a 9 prodotti con un generatore elettronico alla velocità di uno al secondo. La
tavola è divisa per comodità in colonne da 2 cifre o 5 cifre, a seconda dei testi, ma
questa suddivisione ha soltanto lo scopo di facilitare la lettura (tab. 6.2).
83
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
Numeri a caso di più di una cifra si ottengono facendo successive letture. Per un
corretto impiego, l'entrata in una tavola per la lettura di una cifra va fatta in modo
random. Una procedura è la seguente:
chiudere gli occhi, puntare il dito su un punto delle tavole e leggere il numero puntato.
Un altro metodo è quello di usare le prime due cifre lette come coordinate (riga,
colonna) per scegliere una nuova cifra che sarà quella voluta. Dopo aver formato un
numero della lunghezza voluta, ad esempio il numero 3754, esso può essere assunto
come ≤ 1 premettendogli una virgola (cioè 0,3754).
E' possibile introdurre la tavola in un elaboratore e leggerla in qualche modo casuale
accettabile per generare sequenze casuali.
Un tale metodo risulterebbe però troppo costoso per lo spazio occupato dalla tavola
e per il tempo richiesto ad accedervi. Per tal motivo si sono sviluppati metodi per la
generazione automatica di sequenze casuali basate nell'uso di una formula aritmetica. In
essi, si comincia con un numero qualsiasi fornito, dall'esterno, dal programmatore, e
sulla sua base si genera un secondo numero. Questo è a sua volta usato come base per la
generazione di un terzo ecc.
Queste sequenze sono dette pseudo-casuali perché si ripetono dopo un periodo che
può essere reso arbitrariamente lungo, ma è tuttavia finito. In esse è inoltre possibile
fare previsioni sul loro comportamento futuro, contravvenendo così alla definizione
precedentemente data di processo perfettamente casuale.
Sussiste, infine, il dubbio filosofico sulla effettiva possibilità di considerare casuale
una sequenza generata a mezzo di una formula deterministica.
In pratica queste difficoltà si aggirano, tuttavia, dicendo che una sequenza è una
sequenza random se soddisfa alcuni prefissati test di casualità. Da questo punto di vista,
il metodo usato per la generazione diventa del tutto irrilevante.
Storicamente, il primo metodo aritmetico per generare numeri pseudo-casuali a
mezzo di un elaboratore è stato quello denominato del "centro del quadrato", in cui
ogni numero della sequenza è ottenuto prendendo la cifra centrale del quadrato del
numero precedente.
Riportiamo nella tabella 6.1 che segue 30 numeri random di 4 cifre generati utilizzando
il metodo del centro del quadrato cominciando con un numero iniziale pari a 3456.
Usando la terminologia di Metropolis otteniamo la sequenza come segue:
x0 =3456
che elevato al quadrato fornisce
2
x 0 =11943936
perciò
x1 = 9439
84
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
Tab. 6.1
Numeri di quattro cifre ottenuti col metodo dei quadrati centrali
9439
4501
0756
0947
2590
5715
8968
7081
6612
4250
1405
7185
0625
9740
6242
3906
8676
9625
2568
2729
6406
5946
4474
0368
3549
0166
1354
5954
0275
8333
Un altro metodo usato per la generazione di numeri pseudo casuali è quella dei prodotti
centrali.
Alla stessa maniera che per i quadrati centrali si considerano ora due valori iniziali
x0 =3549
x1 =1354
Effettuando il prodotto
x1 *x0 = 3549*1354 =475566
quindi il valore casuale sarà
x2 = 4755
ed alla stessa maniera i successivi
Tab. 6.2
Numeri di quattro cifre ottenuti col metodo dei prodotti centrali
3549
1354
4755
4382
8364
6510
4496
2689
0897
4120
6956
6587
8191
9541
1503
3401
1117
7989
9237
7943
3694
3414
6113
8697
6915
0139
9611
3359
2833
5160
Questi metodi, proposti da von Neumann e Metropolis nel 1946, furono
successivamente abbandonati a favore del metodo "congruente ", perché trovati difficili
da analizzare, relativamente lenti e statisticamente insoddisfacenti. Allo stato attuale,
85
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
quasi tutti gli elaboratori adottano qualche variante del metodo congruente che
descriveremo.
I fattori che determinano l'accettabilità di un metodo sono essenzialmente i seguenti:
l) I numeri devono essere uniformemente distribuiti nella sequenza.
2) I numeri devono risultare statisticamente indipendenti nella sequenza.
3) La sequenza deve essere riproducibile.
4) La sequenza deve poter avere un periodo di lunghezza arbitraria.
5) Il metodo deve poter essere espletato dall'elaboratore con rapidità e deve consumare
poco spazio di memoria.
Questi requisiti devono essere interpretati opportunamente. Infatti, come vedremo, il
metodo congruente partendo da un numero no inizialmente fornito all'algoritmo, calcola
la sequenza
no , n1 , n2 , ..., ni,…
in modo completamente deterministico, ossia per ogni no dà sempre lo stesso ni. Il
requisito 2) dell'indipendenza statistica dei numeri sembra pertanto impossibile a
realizzarsi. Tuttavia, in pratica, si ragiona così: esistono delle tecniche per provare
l'indipendenza statistica di eventi; ebbene, se applicando queste tecniche alla sequenza
generata la prova è superata, allora si potrà giudicarli indipendenti.
In sostanza, come detto all'inizio, si decide di giudicare soltanto le proprietà della
sequenza generata, ignorando il metodo con cui essa fu generata.
Le altre proprietà elencate si comprendono. Sottolineamo che la proprietà 3) della
riproducibilità è particolarmente importante in simulazione ove talora si vuol ripetere un
esperimento nella sua totalità.
6.3.2. Metodo della congruenza lineare
Prima d'introdurre questo metodo occorre fare dei richiami di teoria elementare dei
numeri. Se x è un qualsiasi numero reale, si scrive:
x  = il più grande intero ≤ x
(base di x)
Ad esempio:  2  = 1; 1/2 = 0; -1/2 = -1.
Se x e y sono numeri reali qualsiasi, si definisce la seguente operazione:
x mod y = x -y  x/y 
se y ≠ 0
=x
se y=0.
Da questa definizione si deduce che, quando y ≠ 0:
x
x
x mod y
0≤
- =
<1
y
y
y
e cioè che:
1) Se y > 0, allora 0 ≤ x mod y <y;
2) Se y <0, allora 0>x mod y >y;
[6.8]
86
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
3) La quantità x - (x mod y) = y x/y è un multiplo intero di y ed, essendo della
forma
x-r = yq,
ove r = resto
q = quoziente,
si può pensare x mod y come il resto della divisione di x per y, se x>0;
4) Se x e y sono interi anche x mod y è tale. L'espressione x mod 1 dà la parte
frazionaria di x.
Esempi
5
5 mod 3 = 5 - 3   = 5 - 3 *1 = 2
3
18 mod 3 = 18-3  18  = 18-3 * 6 = 0
3
-2 mod 3 = -2 -3  - 2  = -2 –3 (-1) = + 1
3
5) (x mod y) mod y = x mod y come si ottiene facilmente applicando la [2.5].
Due numeri x e y si dicono congruenti modulo z, e si scrive
x ≡y (mod z)
se x mod z =y mod z, ossia se
x– z
x
y
 =y – z 
 ossia se
z
z
x- y=z(
x
y
-
 ) ossia se x -y è un multiplo intero di z.
z
z
Tale metodo, abbastanza complicato nella teoria, risulta estremamente semplice nella
pratica.
Supponiamo di volere generare numeri random fra 0 e 18 (solo numeri interi). Avremo
bisogno di fissare un numero di partenza che naturalmente potremo scegliere tra 0 e 18.
Supponiamo di scegliere 5. Un numero casuale compreso fra 0 e 18 e di parametri
(4,6,19), con 19 limite superiore, 4 costante moltiplicativa e 6 costante additiva, si
calcola semplicemente moltiplicando 5 per 4, sommandoci 6, dividendo il risultato per
19 e tenendo il resto, ottenendo:
(5*4+6) mod 19 = 7
Il secondo numero sarà:
(7*4+6) mod 19 = 15
Il terzo
(15*4+6) mod 19 = 9
e così via
87
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
(9*4+6) mod 19 = 4
…………………….
La serie di numeri ottenuta non è ancora accettabile come random. Perché questo
avvenga è necessario che superi una serie di test statistici che verranno riportati nel
seguito. Naturalmente, in questo momento ci troviamo di fronte a parametri che hanno
valori abbastanza piccoli per generare una serie di numeri random accettabile. Ci sono
altre condizioni che devono essere soddisfatte perché una serie di numeri random sia
soddisfacente, tuttavia l’importante in questo momento è semplicemente sapere che
esistono.
Si può inoltre notare che dividendo i numeri della serie ottenuta per 19 otteniamo una
serie di numeri random compresa fra 0 ed 1.
Il metodo della congruenza lineare fornisce un modo per generare numeri random
uniformemente distribuiti fra 0 ed 1.
Un’altra cosa che possiamo notare è che le variabili random dipendono soltanto dal
valore iniziale, che viene chiamato seme . E’ evidente quindi che diversi semi
forniscono serie di numeri random diverse.
Il metodo della congruenza lineare è dovuto al Lehmer (Lehmer, 1948). A partire
da un valore iniziale X0 , esso genera una sequenza di valori random
<Xn >=Xo , X1 , X2 , .Xi,…
tale che
Xn+1 ≡ aXn +c
(mod m),
n≥0
(6.9)
cioè tale che Xn+1 è congruente modulo m ad aXn + c, ove
X0 è detto valore iniziale o seme,
X0 ≥ 0
a
è detto moltiplicatore,
a≥0
c
è detto incremento,
c≥0
m è detto modulo,
m > X0 , m > a, m > c.
Espandendo la (6.9) per i=0, 1, 2, … otteniamo
X1 ≡ aX0 + c (mod m)
X2 ≡ aX1 + c = a2 X0 + (a+1)*c (mod m)
c( a 3 − 1)
3
2
3
X3 ≡ a X0 + (a +a+1)c = a X0 +
(mod m)
(6.10)
( a − 1)
……………………………………………………..
c( a i − 1)
Xi ≡ aiX0 +
(mod m)
(a − i)
Dato un valore iniziale X0 (seme), la costante a che individua il moltiplicatore ed una
costante c additiva (incremento), l’equazione (6.9) fornisce una relazione di congruenza
(mod m) per ogni valore di i nella sequenza (X1 , X2 , …, Xi, …). I termini seguenti di Xi
sono determinati con la (6.9) e sono tutti interi, formando una sequenza di residui mod
m.
88
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
Generando diverse versioni della formula (6.9) sono stati sviluppate tre diversi metodi
congruenziali. L’obiettivo di ciascun metodo è la generazione di sequenze con un
periodo massimo in una minima quantità di tempo. Questi metodi sono il metodo
congruenziale additivo, il metodo congruenziale moltiplicativo ed il metodo
congruenziale misto.
Ognuno di questi metodi è attivo su vari computers.
Il metodo congruenziale additivo assume k valori iniziali, dove k è in intero positivo e
calcola una sequenza di numeri per mezzo della relazione di congruenza seguente
Xi+1 ≡ Xi + Xi-k (mod m)
[6.11]
dove a = 1 e c = Xn-k
Se k=1 la (6.11) genera la ben nota serie di Fibonacci.
Il metodo congruenziale moltiplicativo calcola una serie di interi non negativi per
mezzo della relazione di congruenza seguente
Xi+1 ≡ aXi (mod m)
[6.12]
Questo metodo rappresenta un caso speciale della relazione di congruenza [6.9], dove
c=0. Il metodo moltiplicativo è stato utilizzato per il suo buon comportamento statistico.
Cioè i test di frequenza e seriali, così come i test di casualità, quando applicati a
sequenze generate con questo metodo indicano i relativi numeri pseudocasuali sono
correlati ed uniformemente distribuiti. Inoltre è possibile imporre condizioni per
entrambi, il moltiplicatore a ed il seme X0 della serie in maniera da assicurare un
periodo massimo per la sequenza generata con questo metodo. Il metodo moltiplicativo
offre ancora dei vantaggi relativi in termini di velocità di generazione.
I numeri ottenuti per mezzo della relazione di congruenza [6.9] nella forma originaria
(con a e c > di zero) si dicono generati con il metodo congruenziale misto. Il metodo
congruenziale misto è stato usato per offrire alcuni piccoli vantaggi sul metodo
moltiplicativo in termini di aumento della velocità di calcolo e mancanza di periodicità
delle ultime cifre.
La sequenza <Xn > è detta congruente lineare e si ottiene applicando la relazione:
Xn+l = (aXn + c) mod m
n ≥ 0.
[6.13]
Il metodo è detto moltiplicativo se c = 0; misto se c ≠ 0.
Da quanto detto, se (aXn + c) è intero, e m è intero, Xn+1 sarà anch'esso intero.
Inoltre, se m è positivo sarà 0 ≤ Xn+1 < m. Se pertanto, vogliamo generare una sequenza
di numeri tra 0 e 9 basterà porre m = 10. Ad esempio, per X0 = a = c = 7, m = 10,
otteniamo
<Xn>=7, 6, 9, 0, 7, 6, 9, 0, ...
Si noterà che, non appena è Xn = X0 , si ha Xn+1 = X1 ecc. e la sequenza si ripete. Si
intuisce che per avere un periodo lungo occorrerà scegliere m grande. L'esempio dà,
come si vede, una sequenza con periodo molto breve, di lunghezza 4.
89
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
La presenza di un periodo è tipica di tutte le sequenze del tipo Xn+1 =f(Xn ). In
generale, data la sequenza:
X0 , X1 , X2 ,….. Xh , Xh+1 ….. X2h …..
se Xh = X0 è il valore a partire dal quale la sequenza si ripete, si dice che h è il suo
periodo. Vedremo tra poco come si può influire sul valore di h. Intanto osserviamo che
da una sequenza uniforme di numeri interi generati con modulo m è possibile trarre una
sequenza di numeri razionali nell'intervallo semichiuso [0,1) semplicemente dividendo
per m:
<R >=
X 0 X1 X 2
X
,
,
, …, i , ….
m m
m
m
6.3.2.1 Scelta del modulo
Abbiamo precedentemente visto come i va lori generati dalla [6.6] siano sempre di
valore minore del modulo m e come, non appena risulti Xn = Xo , la sequenza si ripeta
con un periodo pari alla distanza nella sequenza tra due valori identici. Poiché è sempre
Xi < m, è chiaro che tra due valori identici non possono capitare più di m valori diversi.
Pertanto la lunghezza del periodo non può mai essere superiore a m. Scegliendo dunque
m soddisfacentemente alto si ottengono sequenze che si ripetono soltanto dopo tempi
lunghi. Notare che quando il periodo ha lunghezza m ogni numero da 0 a m -1 ricorre
soltanto una volta nel periodo; pertanto la scelta di X0 non influenza il periodo.
Diversamente, X0 influenza il periodo. Se, nell'esempio precedente si fa X0 = 3, invece
che X0 = 7, si ha < Xn > = 3, 8, 3, 8, 3, 8,..., cioè periodo 2 anziché 4.
Un altro fattore che influenza la scelta di m è la velocità di generazione. Si
preferisce cioè un valore che renda più veloce il calcolo di (aXn + c) mod m. Tale
calcolo comporta una moltiplicazione, una somma e una divisione. Quest'ultima è
un'operazione relativamente lenta e può essere evitata se si fa m eguale al massimo
valore esprimibile con una parola di macchina più 1. Se b è la lunghezza della parola
(numero di bit, in un elaboratore binario) si sceglierà cioè m =2b, nel qual caso la
riduzione modulo m dell’operando (aXn + c) si farà con una troncatura che ne faccia
conservare soltanto i b bit meno significativi. Se l'elaboratore è decimale, e una parola
contiene d cifre decimali, si sceglierà m = l0 d .
Questo metodo risparmia tempo anche in una successiva divisione che occorre fare
per ridurre il risultato nell'intervallo [0,1). Normalmente occorrerebbe fare la divisione
Xn+1 /m. Se si sceglie m =2b (oppure m = 10d ) basterà immaginare di spostare la virgola
del risultato al suo estremo sinistro.
Il modulo m stabilisce soltanto il limite superiore della lunghezza del periodo, il
quale è invece influenzato largamente dal valore del moltiplicatore a e dall'incremento
c. Vediamo con quale legge.
90
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
6.3.3.2 Scelta del moltiplicatore e dell'incremento
I valori di a e c devono essere scelti in modo che il periodo non si allontani molto
dal limite superiore 2b stabilito con m. Essi devono essere, ovviamente, scelti anche in
modo da avere una sequenza con i requisiti di casualità richiesti. Se ad esempio si pone
a=c = 1, la sequenza è Xn+1 = (Xn + 1) mod m, la quale ha periodo m; tuttavia, come
mostra il seguente esempio, ottenuto per m = 10, X0 = 2, la sequenza
<Xn>=2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2,...
Prescindendo dalle proprietà statistiche, la teoria dei numeri fornisce teoremi che
permettono di determinare i valori delle costanti a, c, m che garantiscono un periodo
massimo. Di questi teoremi diamo qui i soli enunciati, la loro dimostrazione richiedendo
il richiamo di teoremi della teoria dei numeri, alcuni dei quali classici, attribuiti a
Euclide, al cinese Sun- Tse e a Eulero (Ore, 1948), e altri più recenti (Greenberger,
1961; Hull e Dobell, 1962). Rimandiamo pertanto il lettore interessato alle
dimostrazioni, alla letteratura originale, oppure a Knuth (Knuth, 1972b).
Teorema A: Una sequenza congruente lineare ha un periodo di lunghezza m se e
solo se:
1) c e m sono primi tra loro;
2
2) a -1 è un multiplo di p, per ogni numero primo p che divide m (ad esempio, se m =
10, è p= 2 e p = 5; dunque a - 1 dev'essere multiplo di 2 e 5);
3) se m è multiplo di 4, a-1 è multiplo di 4.
Ad esempio, si può scegliere m = 10, a = 21, c = 3, e avremo
Xn+1 = (21 Xn + 3) mod 10.
Per X0 = 3 la sequenza è
<Xn >=3, 6, 9, 2, 5, 8, 1, 4, 7, 0, 3, 6, 9,...
h = 10.
Il principale vantaggio del metodo misto consiste nel periodo pieno. Sebbene il suo
comportamento statistico sia generalmente buono, in alcuni casi è completamente
inaccettabile.
6.3.3.3
Metodo moltiplicativo
Il teorema A mostra che, se c = 0, la sequenza non può più avere il periodo massimo m.
Ciò è d'altronde anche intuitivo, perché la sequenza soddisfa ora la relazione:
Xn+1 =(a Xn ) mod m
2
[6.9]
Cioè il loro massimo comune divisore è 1.
91
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
e il valore Xn =0 non dovrebbe mai comparire, perché esso farebbe degenerare la
sequenza. In generale, se d è un qualunque divisore di m ed Xn è multiplo di d cioè se m
ed Xn hanno un divisore comune d, avremo Xn+1 , Xn+2 ,... tutti multipli di d. Ad
esempio, per m = l0, a = 7, X0 = 4 (m e X0 hanno divisore comune d = 2) abbiamo:
<Xn > = 4, 8, 6, 2, 4,...
Pertanto, la prima considerazione da fare è che per avere una sequenza che possa
interessare, Xn ed m devono essere primi tra loro per tutti gli n, e ciò limita la lunghezza
del periodo. La lunghezza massima che si può raggiungere è data da:
Teorema B: Il massimo periodo che si può ottenere col metodo moltiplicativo è 2b-2
, con b ≥ 4 nel caso binario, e 5 * l0d-2 con d ≥ 5, nel caso decimale. Esso è ottenuto se:
1) X0 ed m sono primi tra loro.
2) a è un "elemento primitivo modulo m" (cioè se a e m sono primi tra loro, il più
piccolo intero λ tale che aλ ≡ 1 (mod m) è chiamato l'ordine di a modulo m. Ogni
valore di a che dà il massimo possibile λ è chiamato elemento primitivo modulo m).
Dalla condizione 1) risulta che, poiché m = 2b (m = 10d = 2d . 5d , nel caso decimale)
X0 può essere un qualunque numero dispari positivo (e un qualunque dispari positivo
non divisibile per 5, nel caso decimale). Dalla condizione 2) risulta anzitutto che, poiché
a dev'essere primo con m = 2b (m = 2d . 5d, nel caso decimale), anche esso deve essere
un numero positivo dispari (non divisibile per 5 nel caso decimale). E' possibile inoltre
dimostrare che, se si sceglie a ≡ 3 oppure 5 (mod 8), cioè a = 8t ± 3 ove t e un qualsiasi
intero positivo, allora a è un elemento primitivo modulo m, nel caso binario. Nel caso
decimale, una buona scelta è a = 200 t ± z, ove z è uno dei seguenti valori: 3, 11, 13, 19,
21, 27, 29, 37, 53, 59, 61, 67, 69, 77, 83, 91,109,117,123,131,133,139,141,147,163,
171, 173, 179,111, 187, 189, 197. Nel caso binario, un esempio di sequenza che non
soddisfa le condizioni del teorema B si ottiene per m = 25 , a = 7, X0 = 3, ed è:
< Xn > = 3, 21, 19, 5, 3, ….
di periodo h = 4 < 25-2 . Se invece si pone a = 11, si ottiene
<Xn> = 3, 1, 11, 25, 19, 17, 27, 9, 3,...
di periodo massimo h = 8.
Poiché il periodo del moltiplicativo è sempre minore di m, con questo metodo non
tutti i numeri compaiono nel periodo. Il metodo, a differenza di quello misto, presenta
nell'intervallo [0, m-1] zone vuote, cioè zone in cui non si presentano numeri. La
distribuzione e la distanza tra le zone varia col seme e col moltiplicatore. A proposito
esistono ris ultati (Jansson, 1966) che raggruppiamo nel seguente corollario:
Corollario A
1 ) Se a ≡ 5 (mod 8), le sequenze generate contengono i numeri 8ν+ l se X0 ≡ 1 (mod 4), e
i numeri 4ν + 3 se X0 ≡ 3 (mod 4), con ν = 0, 1, 2, 2 b-2 -1;
92
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
2) Se a ≡ 3 (mod 8), le sequenze generare contengono i numeri 8ν+1 e 8v+3 se
X0 =1,3,9, oppure 11 (mod 16), e i numeri 8ν+5 e 8v+7 se X0 ≡ 5, 7, 13, 15 (mod 16),
ove v=0, 1,..., 2b-3-1.
La maggior parte delle versioni dei metodi congruenziali moltiplicativi usano un
modulo m=pe, rappresentante la dimensione della parola di un computer, dove p indica
il numero di cifre costituenti il sistema di numerazione usato ed e rappresenta il numero
di cifre in una parola di un computer.
Per i computer binari p=2 ed per i computer decimali p=10.
Sulla lunghezza della voce dei computer il valore di e è lasciato alla discrezione dei
programmatori, dove la lunghezza fissata della voce e è una costante. Per indicare cifre
decimali o binarie saranno usate al posto di e i simboli d e b.
Ci sono due ragioni per scegliere m=pe. la prima e che la riduzione mod m è
accompagnata dal troncamento e trattenuta delle e cifre di più basso ordine; secondo, la
conversione all’intervallo unitario (per ottenere variabili uniformemente distribuite)
involve lo spostamento del punto binario o decimale alla sinistra del numero. Con una
opportuna scelta di m queste divisioni possono essere raggiunte con un artificio.
Poiché la maggior parte dei computer utilizzano o il sistema binario o il sistema
decimale, considereremo il metodo moltiplicativo per ciascuno dei due sistemi di
numerazione. In entrambi i casi avremo a che fare con sequenze di numeri numeri non
negativi (minori di pe) per mezzo di una relazione congruenziale del tipo
ni+1 ≡ ani (mod pe)
[6.14]
che è la formula per generare i residui delle potenze. Discuteremo in entrambi i casi le
condizioni che potranno essere imposte al moltiplicatore a ed al valore iniziale X0 per
assicurare il massimo periodo per le sequenze generate con questo metodo.
6.3.3.3.1 Computers binari
Per un computer binario scegliamo m=2b, dove con b indichiamo il numero di cifre
binarie in una voce. In accordo con il teorema B per b>2, il massimo periodo ottenibile
è h=2 b-2 . Il problema successivo è quello di trovare un valore per la costante
moltiplicativa che ha ordine h=2b-2 . Dal teorema B segue che a deve essere
relativamente primo con m. Inoltre se a è relativamente primo con m=2b, deve essere un
numero dispari. Si può mostrare che i valori di a che soddisfano a queste richieste
risiedono in una classe residua rappresentata dalla relazione di congruenza
a≡ ± 3 (mod 8)
[6.15]
Questa relazione può essere espressa anche come
a=8t ± 3
[6.16]
Dove t è un qualunque intero positivo.
In accordo con la formula di Greenberger, i valo ri di a che sono prossimi a 2b/2
minimizzano la serie delle correlazioni del primo ordine fra i numeri pseudocasuali.
Poiché sono altamente desiderabili piccole correlazioni fra le caratteristiche dei
generatori di numeri pseudocasuali, questa regola sarà applicata per determinare la
migliore costante moltiplicativa per entrambi i casi, sia binario che decimale.
Avendo scelto una costante moltiplicativa, dobbiamo ora applicare un metodo per
scegliere un valore iniziale. In accordo con il teorema B, X0 deve essere relativamente
primo con 2b. Questa richiesta può essere soddisfatta scegliendo un qualunque numero
dispari positivo.
93
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
La procedura moltiplicativa per generare numeri casuali può essere riassunta come
segue:
1. – Scegliamo un numero intero dispari qualsiasi come seme della serie da generare.
2. – Scegliamo un valore intero
a = 8t ± 3
Dove t è un qualunque positivo intero per la costante moltiplicatica. Un valore di a
prossimo a 2b/2 soddisferà la condizione di Coveyou-Greenberger (se b=35, a=217 +3
è una buona scelta).
3. – Calcoliamo il prodotto aX0 usando l’aritmetica fixed point intera. Questo prodotto
consisterà di 2b bits, per cui scarteremo i b bits di ordine maggiore e tratterremo i b
bir di ordine inferiore che rappresenterà X1 . (La istruzione di moltiplicazione intera
del FORTRAN scarta automaticamente i b bit do ordine superiore).
4. – Calcoliamo r1 = X1 /2b per ottenere una distribuzione uniformemente distribuita
definita nell’intervallo unitario.
5. – Ogni successivo numero casuale Xn+1 è ottenuto con i b bit di ordine inferiore del
prodotto aXi.
Consideriamo l’esempio seguente che illustra il caso in cui b è assunto uguale a 4. La
procedura moltiplicativa produrrà 4 numeri casuali (h=24-2 =4) così come ricordato
in precedenza.
1. – Scegliamo X0 =7. Questo in forma binaria equivale a X0 =0111.
2. – Scegliamo un valore di a prossimo a 2b/2 =4. Per t=1, dall’equazione a= 8t ± 3 , a è
uguale ad 11 o a 5. Scegliamo quindi a=5 ossia a=0101 in forma binaria.
3. – aX0 =(0101)(0111) = 00100011. Perciò
X1 =0011 ed r1 =3/16=0,1875.
4. – aX1 = (0101)(0011) = 00001111. Perciò
X2 = 1111 ed r2 = 15/16 =0,9375.
5. – aX2 = (0101) (1111) =01001011. Perciò
X3 = 1011 ed r3 =11/16 = 0,6875.
6. – aX3 = (0101) (1011) = 00110111. Perciò
X4 = 0111 = X0 ed r4 =7/16 = 0.4375
6.3.3.3.2. Computers decimali
Per un computer decimale scegliamo m=10 d=2d*5d, dove d è il numero di cifre decimali
in una parola. In accordo con il corollario a, a deve essere relativamente primo con 10,
e poiché 10 è un numero composto, l’ordine h di a (mod 10d ) è al massimo
H= m.c.m.[2d-2 , 4*5d-1 ] = 5*10d-2
[6.17]
Per d>3. I numeri con questo periodo massimo devono essere della forma
a≡±3 (mod 8)
in maniera da assicurare il massimo ordine mod 2 d e contemporaneamente devono avere
ordine 5d-1 o 2*5d-1 o 4*5d-1 (mod 5d).
La costante moltiplicativa con periodo 5*10 d-2 residua in 32 classi differenti residue
mod 200, indicate con
a≡±(3, 11, 13, 19, 21, 27, 29, 37, 53, 59, 61, 67, 69, 77, 83, 91) (mod 200) [6.18]
Di conseguenza a può essere anche espressa come
94
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
a= 200t ±p
dove t è un qualunque intero positivo e p è uno dei 32 numeri dell’equazione [6.18]. In
accordo con il teorema B, X0 deve essere relativamente primo con 10d, che implica che
qualsiasi numero dispari non divisibile per 5 può essere scelto come valore iniziale.
La procedura moltiplicativa per generare numeri casuali su un calcolatore decimale è
riassunta nel seguito:
1. - Scegliamo un qualunque numero intero dispari non divisibile per 5 come seme della
nostra sequenza.
2. – Scegliamo un intero a=200t±p per la costante moltiplicativa a, dove t è un
qualunque intero e p è uno dei valori 3, 11, 13, 19, 21, 27, 29, 37, 53, 59, 61, 67, 69,
77, 83, 91. Un valore di a prossimo a 10d-2 soddisfa la condizione di CoveyouGreenberger (se d=10, a=100000±3 è una buona scelta).
3. – Calcoliamo il prodotto aX0 usando l’aritmetica intera fixed point. Questo prodotto
consisterà di 2d digits, per cui scarteremo i d digits di ordine superiore e tratterremo
i d digits di ordine inferiore.
4. – Il punto decimale deve essere spostato di d digits a sinistra per convertire il numero
casuale intero in un numero uniformemente distribuito nell’intervallo unitario
x
(r1 = 1 ).
10
5. – Ogni numero casuale successivo Xi+1 sarà ottenuto dalle d cifre di ordine inferiore
del prodotto aXi.
Consideriamo il seguente esempio in cui d è assunto =4. La procedura moltiplicativa
produrrà 500 numeri casuali (h=5*104-2 =500) prima di ripetersi.
1. – Scegliamo X0 =5379.
2. – Scegliamo un valore di a prossimo a 10d/2 = 100.
O
a=(200)(0) + 91 = 91
o
a=(200)(1) – 91 = 109
sono entrambe buone scelte per il valore di a. Per questo esempio sceglieremo 91.
3. – aX0 =(91)(5379)=00489489. Perciò
X1 =9489 ed r1 =0.9489.
4. – aX1 =(91)(9489)=00863499. Perciò
X2 =3499 ed r2 =0.3499.
5. – aX2 =(91)(3489)=00318409. Perciò
X3 =8409 ed r3 =0.8409.
6. – aX3 =(91)(8409)=00765219. Perciò
X4 =5219 ed r4 = 0.5219.
L’esempio mostra che la legge regola le cifre lontano dalla casualità. Con i generatori
moltiplicativi solo le posizioni delle cifre di ordine superiore hanno periodo pieno,
mentre il periodo diminuisce per le cifre di ordine inferiore. Perciò se è richiesto un
numero casuale più piccolo di quello contenibile in una parola, saranno usate le cifre di
ordine superiore.
Anche se il metodo congruenziale moltiplicativo è il più facile da programmare ed è
molto veloce sulla maggior parte dei computers, si possono verificare situazioni di
cattivo funzionamento specialmente dovute alle correlazioni che rivela nella serie che
possono portare a delle aberrazioni.
95
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
6.3.3.4
Metodo Congruenziale Misto
Offre alcuni vantaggi rispetto al metodo moltiplicativo ma introduce problemi di
accettabilità statistica. Il metodo è basato sulla formula ricorsiva presentata da
Xn+1 =aXn +c (mod m)
E con valori appropriate scelti per il moltiplicatorea e per la costante addittiva c?0, il
periodo copre l’intera serie di m differenti numeri, se m è il modulo.
Le condizioni imposte su a e c per raggiungere un periodo pieno possono essere
riassunte come segue:
c ed m sono primi fra loro;
a≡1 (mod p) è un fattore primo di m;
a≡1 (mod 4) se 4 è un fattore di m.
Il modulo m è espresso come m=2b per computers binari ed m=10 d su computers
decimali. Segue l’interpretazione pratica di queste regole.
6.3.3.4.1. Computers binari
Con computers binari m=2b, dobe b è il numero di cifre binarie in una parola. Dal
teorema A sappiamo che una sequenza di numeri pseudo-casuali può avere un periodo
pieno con lunghezza uguale a 2 b.
Le regole per raggiungere questo risultato richiedono che nella equazione
Xn+1 =aXn +c (mod m)
Il parametro c sia un numero dispari e che
a≡1 (mod 4) che può essere raggiunto ponendo
a=2s+1
per s=2. Per X0 può essere scelto un qualunque numero positivo.
Tuttavia le condizioni scritte non sono sufficienti per assumere che la sequenza generata
con il metodo congruenziale misto possa essere statisticamente soddisfacente.
Per esempio, la scelta di una costante moltiplicatica che soddisfi la condizione di
Coveyou-Greenberger
a=2b/2 +1
non è una condizione sufficiente per minimizzare le correlazioni del primo ordine che si
generano nella serie dei numeri generati con questo metodo.
Solo con verifiche empiriche possiamo raggiungere una certa confidenza con i metodi
congruenziali misti.
Test sistematici sui generatori misti su computers binari sono stati descritti da vari
autori3 ed indicano risultati validi solo per m=235 . Questi test rivelano che X0 gioca un
ruolo minore nel determinare le proprietà statistiche delle sequenze generate con il
metodo congruenziale misto, sebbene alcuni valori di c tendono ad aumentare le
proprietà statistiche delle sequenze.
Una buona scelta per un moltiplicatore è a 27 +1 quando c=1.
3
- Chernoft, Herman. “Sequential design of experiments”, Annuals of Mathematical Statistics, XXX
(September 1959), 755-770.
- Churchman, C. West. “An analysis of the concept of Simulation”, Symposium on Simulation Models.
Edited by Austin C. Hoggatt and Frederick E. Balderstone- Cincinnati: South-WesternPublishing Co.,
1963.
96
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
6.3.3.4.2. Computers decimali
Con computers decimali m=10d, dove d è il numero di cifre decimali in una parola. Per
poter generare una sequenza di numeri pseudocasuali con periodo pieno, la costante c
deve essere un numero dispari positivo non divisibile per 5, ed il moltiplicatore a deve
soddisfare la condizione
a≡1 (mod 20)
[6.19]
o in alternativa
a=10s+1
[6.20]
per s>1. Queste regole possono essere supportate con la condizione di CoveyouGreenberger che
a=10d/2 +1
[6.21]
Di nuovo queste condizioni non sono sufficienti a garantire l’accettabilità statistica delle
proprietà per sequenze di numeri pseudo casuali generate col metodo congruenziale
misto.
Una esperienza limitata con i test statistici ha suggerito alcuni criteriper scegliere valori
di a e c su basi empiriche.
Come visto in precedenza, certi numeri per c conducono a migliori risultati statistici di
altri, ed X0 ha un effetto trascurabile o addirittura nessun effetto sulle proprietà
statistiche delle sequenze.
Risultati soddisfacenti sono stati ottenuti4 usando a=101, c=1 e d=8.
Ogni cifra nel numero casuale generato con questo metodo (includendo l’ultima cifra in
una parola) ha un periodo pieno. Questa proprietà fornisce piccole dimensioni della
parola e velocità possibili maggiori quando la lunghezza del periodo non è una richiesta
significativa.
6.3.3.5. Relazione tra generatori moltiplicativi e misti
Il generatore moltiplicativo è tradizionalmente considerato migliore del misto, per la
maggiore casualità con cui si manifestano i numeri. Confronti effettuati hanno infatti
portato ad affermare che il comportamento statistico del metodo misto non è così
soddisfacente come quello del moltiplicativo (Hull, 1964; Mac Laren, 1965).
Queste affermazioni sono state recentemente ridimensionate fino ad affermare che l'una
forma di generatore non è migliore dell'altra (Marsaglia, 1972; Overstreet, 1976). Viste
da vicino, tuttavia, le due affermazioni non si contraddicono. Mentre, infatti, la prima
tende ad affermare che i generatori moltiplicativi di periodo massimo sono più spesso
buoni, dal punto di vista statistico, dei generatori misti di periodo massimo, la seconda
sostiene che per ogni sequenza reale <Rn > nell'intervallo [0.1), prodotta da un
generatore moltiplicativo di periodo massimo modulo 2 b, esiste una corrispondente
sequenza reale <Rn > prodotta da un generatore misto, tale che la differenza Ri-Ri 'i
<3/2b . Cioè, per ogni applicazione pratica, il misto produce la stessa sequenza di reali.
Infatti, usando la parte 1 del corollario A è possibile dimostrare (Overstreet, 1976) che,
dato un generatore moltiplicativo
Xn+1 = a Xn mod 2b
[6.7’]
con a≡ 5 (mod 8) e X0 = 1 (mod 4), esiste un generatore misto
4
Bailey, N. T. J. “The elements of Stochastic Processes”. New York: John Wiley and Sons, 1964.
97
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
X’n +1 = (a X’n + c) mod 2 b-2
con c= a/4 che dà X’i = Xi/4. Pertanto, per tutti i corrispondenti valori Xi e X’i, ove
il generatore moltiplicativo produce il valore reale Xi/2b, il generatore misto produce il
valore X`i /(2b-2) = (Xi /2b)-(1/2 b). Se invece è X0 ≡ 3 (mod 4) e c=3a/4, allora il
generatore misto produce in corrispondenza il valore X’i/(2 b-2 )= (Xi/2 b)-(3/2b )
Usando invece la parte 2 del corollario A, è possibile dimostrare che, dato un
generatore [6.7'] con a ≡ 3 (mod 8) e X0 ≡ 1 (mod 2), esiste un generatore misto
X’n+1 = (a X’n +c) mod 2 b-1
con c=a/2  che dà X’i = Xi/2 . Esso pertanto, ove il generatore moltiplicativo
produce il valore reale Xi /2b, produce il valore
X’i/(2b-1 ) = (Xi /2b)- (1 /2 b).
Si ottiene così un generatore misto che offre praticamente le stesse qualità statistiche di
uno moltiplicativo, conservando i vantaggi di un maggior periodo. In particolare, nel
primo caso tutte le condizioni del teorema A sono soddisfatte e quindi il periodo del
generatore misto è quello massimo; nel secondo la 3) non è soddisfatta e il periodo è
metà del massimo. Tuttavia, poiché il generatore moltiplicativo corrispondente produce
un periodo che è solo un quarto del modulo, questo metodo fornisce un generatore misto
che ha un periodo da due a quattro volte maggiore di uno moltiplicativo con identiche
proprietà statistiche. Un risultato che si può rivelare interessante per simulazione con
piccoli elaboratori.
Recentemente sono apparsi in letteratura segnali di insoddisfazione per le proprietà
statistiche dei numeri generati con metodi congruenziali
6.3.3.6. Il Metodo Congruenziale additivo
Il semplice processo additivo di generazione di numeri casuali secondo la formula
Xi+1 =Xi + Xi-k (mod m)
È stato programmato su diversi computers con varianti discusse e testate da Green5 .
La formula base usata per la verifica è stata
Xj≡(Xj-1 +Xj-k ) (mod 2b)
[6.22]
Dove b è il numero di bits supportato da un computer digitale. Con questo generatore
additivo devono essere forniti k numeri memorizzati una volta per tutte in memoria.
I numeri pseudocasuali generati in questo modo hanno un periodo uguale a pk *2b-1 ,
dove pk è una costante che dipende da k e da b. Per b=35 sono stati gabellati diversi
valori di pk , dei quali vengono riportati soltanto p6 =63 e p16 =255.
5
- Green, B. F. “Digital Computers in Research”. New York: Mc Graw-Hill Book Co.. 1963.
- Green, B. F., Smith, J., and Keen, L. “Empirical tests of an addittive Random Number Generator”,
Journal of the Association for Computer Machinery, VI, No 4 (1959), 527-537.
98
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
Test statistici indicano che k=16 è il più piccolo valore per numeri pseudocasuali
accettabili.
Questa scelta fornisce un periodo pari a 255*234 .
Scartando ogni secondo numero dalla sequenza si producono numeri casuali accettabili
con k=6 e con un periodo di 63*234 . Test comparativi sui vantaggi del metodo additivo
sul metodo moltiplicativo non sono riportati in letteratura. Le caratteristiche di velocità
dei generatori addittivi dipende dal linguaggio usato e dai computers usati e le proprietà
statistiche dei numeri casuali richiedono test empirici come con qualunque altro
metodo.
6.4. Test Statistici per l’accettazione delle serie generate
I numeri pseudocasuali, benché siano matematicamente determinati dai dati di partenza,
possono essere trattati come numeri realmente a caso, se passano una serie di tests che
ne verificano le proprietà statistiche.
Dalla letteratura tecnica sono stati raccolti i più importanti tests di casualità.
6.4.1. Test di frequenza
Il test di frequenza controlla che ogni numero pseudocasuale compaia
approssimativamente con la stessa frequenza in ogni posizione della sequenza. Il test
consiste nel determinare le frequenze di estrazione dei singoli numeri e confrontarle
con quelle previste, ipotizzando una distribuzione uniforme.
L'aderenza alla distribuzione teorica si misura con un test di χ2 (chi quadro), secondo il
seguente procedimento.
Applichiamo il test alla serie di 30 numeri pseudocasuali di quattro cifre generati con il
metodo dei quadrati centrali.
Numeri di quattro cifre ottenuti col metodo dei quadrati centrali
9439
4501
0756
0947
2590
5715
8968
7081
6612
4250
1405
7185
0625
9740
6242
3906
8676
9625
2568
2729
6406
5946
4474
0368
3549
0166
1354
5954
0275
8333
Nella tabella ci sono 30 numeri di 4 cifre ciascuno, quindi:
30*4 = 120 cifre complessive.
Ogni cifra dovrebbe apparire quindi un numero di volte pari a
120:10 = 12 .
Possiamo quindi confrontare le frequenze delle cifre presenti nella tabella con le
frequenze teoriche, usando il test del χ2 .
99
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
Se le frequenze osservate differiscono significativamente dalle frequenze teoriche,
cosicché le cifre non possono essere considerate casuali, il valore del χ2 calcolato sarà
maggiore del χ *2 tabellato fornito dalla tabella del χ2 .
Nel caso in esame ci sono 9 gradi di libertà forniti dalla formula
g = 10-1 = 9
ed il valore del χ *2 , per un livello di confidenza del 5% è 16,916.
Di conseguenza dato che il χ2 calcolato risulta uguale a 9,664, come si può verificare
dalla tabella che segue, che riporta i conteggi del χ2 calcolato, possiamo concludere che
il test non rivela alcuna non casualità a questo livello di confidenza.
Calcolo del χ 2 per il test di frequenza eseguito sulla tabella di numeri
pseudocasuali ottenuti con il metodo dei quadrati centrali
Cifra
Frequenza
Frequenza (Oi - Fi ) (Oi - Fi )2 (O - F ) 2
i
i
Osservata (Oi ) Teorica (Fi )
Fi
0
1
2
3
4
5
6
7
8
9
14
8
11
8
15
17
17
10
8
12
12
12
12
12
12
12
12
12
12
12
2
-4
-1
-4
3
5
5
-2
-4
0
4
16
1
16
9
25
25
4
16
0
0,333
1,333
0,083
1,333
0,750
2,083
2,083
0,333
1,333
0,000
(Oi − Fi ) 2
χ =∑
= 9,664
Fi
i= 0
9
2
Sono stati suggeriti altri test del χ2 . Vediamone un altro.
I 30 numeri vengono ripartiti in M gruppi, ad esempio con M=3, quindi costituiti da 10
gruppi per ciascun gruppo.
Si conta ora il numero delle cifre costituenti i numeri raggruppati in ciascuna classe,
ossia
4 * 10 = 40.
La frequenza teorica relativa alla presenza di ciascuna cifra in ciascun gruppo è
40: 10 = 4 volte.
Possiamo quindi confrontare le frequenze delle cifre presenti in ciascun gruppo con le
frequenze teoriche, usando il test del χ2 .
Ripetendo il calcolo per gli M=3 gruppi otteniamo i valori
χ12 , χ 22 , χ 32 in generale χ M2
E’ stato dimostrato che una sequenza di numeri realmente a caso fornisce, per gli M
valori dei χ2 , una distribuzione approssimata di tipo χ2 con n - 1 gradi di libertà, con
100
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
g = n-1 = 10- 1 = 9.
Il controllo dell'aderenza della distribuzione dei χ 2M calcolati, alla distrib uzione ideale
di tipo χ2 , viene effettuato con un nuovo test di χ2 , che, con un assegnato livello di
confidenza, garantisce l'attendibilità dell'ipotesi di casualità per la sequenza generata.
Il test si esegue identicamente applicandolo alla serie di numeri pseudocasuali reali
ottenuti dividendo la serie intera utilizzata fino ad ora per 10.000, ossia spostando la
virgola all’estrema sinistra di ciascun numero. Come nel caso precedente si dividono
gli n numeri ottenuti con questa operazione (in questo caso con n=30) in M gruppi
consecutivi di N numeri (in questo caso con M=3 ed N=10). A questo punto si divide
l’intervallo unitario in x subintervalli uguali. Il numero di numeri pseudocasuali atteso
N
in ciascun subintervallo è
. S indichi ora con f j, con j=1, 2, …, x, l’attuale numero di
x
( j − 1)
j
numeri pseudocasuali ri ( con i = 1, 2, …, N) nel subintervallo
≤ ri < .
x
x
La statistica
x x
N
χ12 = ( ) ∑ ( f j − ) 2
N j=1
x
ha approssimativamente una distribuzione del χ 2 con x-1 gradi di libertà per una
sequenza di numeri veramente casuali. Questa statistica è quindi calcolata per tutte le
serie consecutive di N numeri pseudocasuali. Successivamente sia Fj il numero degli M
valori del χ12 che giacciono fra il (j-1)esimo ed il jesimo quantile della distribuzione
con x-1 gradi di libertà (pe j= 1, 2, …, u).
Calcoliamo la statistica
u u
M
χ F2 = ∑ ( F j − ) 2
M j=1
u
L’ipotesi che i numeri pseudocasualinella sequenza composta da M serie di numeri
pseudorandom sia veramente random è rigettata se χ 2F con u-1 gradi di libertà eccede il
valore critico letto al desiderati livello di significatività. Una serie di valori molto
utilizzata per questo test consiste in : x= u = 10, M = 100 ed N = 1000. I valori delle
N
M
frequenze teoriche attese
ed
dovrebbero essere sempre maggiori di 5.
x
u
Il test si esegue identicamente applicandolo alla serie di numeri pseudocasuali reali
ottenuti dividendo la serie intera utilizzata fino ad ora per 10.000, ossia spostando la
virgola all’estrema sinistra di ciascun numero. Come nel caso precedente si dividono
gli n numeri ottenuti con questa operazione (in questo caso con n=30) in M gruppi
consecutivi di N numeri (in questo caso con M=3 ed N=10). A questo punto si divide
l’intervallo unitario in x subintervalli uguali. Il numero di numeri pseudocasuali atteso
N
in ciascun subintervallo è
. S indichi ora con f j, con j=1, 2, …, x, l’attua le numero di
x
( j − 1)
j
numeri pseudocasuali ri ( con i = 1, 2, …, N) nel subintervallo
≤ ri < .
x
x
La statistica
101
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
χ12 = (
x x
N
)∑ ( f j − ) 2
N j=1
x
ha approssimativamente una distribuzione del χ 2 con x-1 gradi di libertà per una
sequenza di numeri veramente casuali. Questa statistica è quindi calcolata per tutte le
serie consecutive di N numeri pseudocasuali. Successivamente sia Fj il numero degli M
valori del χ12 che giacciono fra il (j-1)esimo ed il jesimo quantile della distribuzione
con x-1 gradi di libertà (pe j= 1, 2, …, u).
Calcoliamo la statistica
u u
M
χ F2 = ∑ ( F j − ) 2
M j=1
u
L’ipotesi che i numeri pseudocasualinella sequenza composta da M serie di numeri
pseudorandom sia veramente random è rigettata se χ 2F con u-1 gradi di libertà eccede il
valore critico letto al desiderati livello di significatività. Una serie di valori molto
utilizzata per questo test consiste in : x= u = 10, M = 100 ed N = 1000. I valori delle
N
M
frequenze teoriche attese
ed
dovrebbero essere sempre maggiori di 5.
x
u
6.4.2. Test di uniformità
Questo test è usato per verificare la distribuzione casuale e uniforme dei singoli
numeri che appaiono nella sequenza pseudorandom.
Data una sequenza <Rn> di numeri reali tra 0 e 1, si applica la trasformazione
Zn =  d Rn  e si ottiene una sequenza di numeri interi compresi tra 0 e d-1. Un valore
ragionevole di d è d = 100 per elaboratori decimali e d = 64 o 128 per elaboratori binari.
Per ogni categoria 0 ≤ s <d si conta quante volte risulta Zj = s per 0 ≤ j < n e si applica
il test χ2 usando k = d e probabilità ps = 1/d per ciascuna categoria.
6.4.3. Test seriale o di autocorrelazione
I test seriali vengono usati per verificare la casualità fra numeri successivi di una
sequenza. Un test seriale normalmente è applicato a coppie di numeri dove i numeri
pseudocasuali sono presi come coordinate di un punto in un quadrato unitario, diviso in
x2 celle. L’idea può essere estesa a triplette di numeri pseudocasuali che rappresentano
le coordinate di punti casuali all’interno di un cubo di lato unitario. Il test seriale che
descriveremo è basato anche sul test del chi-quadro 3 consiste nei seguenti passi.
Cominciamo col generare una sequenza di M
serie consecutive di numeri
2
pseudocasuali e calcoliamo il χ1 per ognuna delle M serie. Quindi per ogni serie di
numeri pseudocasuali indichiamo con f ik il numero di numeri pseudocasuali ri (con i=1,
( j − 1)
j
(k − 1)
k
2, …, N-1), che soddisfa la relazione
≤ ri < e
≤ ri+1 < , dove j,k=1, 2,
x
x
x
x
…,x. Quindi calcoliamo la statistica
x2 x x
N −1
χ 22 =
( f jk − 2 ) 2
∑∑
N − 1 j=1 k =1
x
per ognuna delle serie degli N numeri pseudocasuali.
102
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
Good ha dimostrato che χ 22 - χ 12 ha approssimativamente una distribuzione del chiquadro con x2 -x gradi di libertà per una sequenza di numeri veramente casuale.
A questo punto calcoliamo χ 22 - χ 12 per ognuna delle M serie di numeri
pseudocasuali indicando con sj il numero degli M valori risultanti dal calcolo di χ 22 - χ 12
che giacciono fra il (j-1)-esimo ed il j-esimo (con j=1, 2, …,u) quantile di una
distribuzione con x2 -x gradi di libertà.
Infine calcoliamo
u u
M
χ s2 = ∑ ( s j − ) 2
M j=1
u
con u-1 gradi di libertà. Il test seriale di casualità di una sequenza di numeri
pseudocasuali è accettabile ad un dato livello di confidenza (o di significatività) se i
valori di χ 2F e χ 2s non sono inconsistenti con l’ipotesi che essi sono estratti a caso da
una distribuzione chi-quadro con appropriati gradi di libertà.
Test simili possono essere usati per triplette.
Verificare l’aggancio del precedente con ciò che segue
Consideriamo sempre, per semplicità, la stessa serie di numeri ottenuta col metodo del
“centro del quadrato”.
Abbiamo 30 numeri di 4 cifre ciascuno, ovvero un totale di
30 * 4 = 120 cifre.
Consideriamo ora la coppia di cifre 12 e calcoliamoci la probabilità che le due cifre si
presentino una di seguito all’altra nella sola modalità 12. Questa sarà la frequenza
teorica da utilizzare nel test del χ2 .
Andiamo ora a contare quante volte invece le cifre 1 e 2 si presentano nelle 120 cifre
disponibili accoppiate in sequenza con la modalità 12. Questa rappresenterà la
frequenza osservata relativa alla coppia 12 che si presenta con questa modalità.
Ripetiamo il discorso fatto per ogni coppia di cifre possibile costituita con 10 cifre
ottenendo ancora per ogni coppia una frequenza teorica ed una osservata.
Applichiamo a questo punto il test del χ2 con un numero di gradi di libertà uguale a
g = n-2 = 10 – 2 = 8.
Se le frequenze osservate differiscono significativamente dalle frequenze teoriche,
cosicché le coppie di cifre non possono essere considerate casuali, il valore del χ2
calcolato sarà maggiore del valore teorico fornito dalla tabella.
Se il χ2 calcolato risulta minore di un χ2 tabellato ad un livello di confidenza del 5%
diremo che è accettabile l’ipotesi di casualità a quel livello di confidenza.
Idem
Questo test si applica a coppie di numeri contigui (Zi, Zi+1 ) della sequenza <Zn > ed
è inteso a dimostrare che non esistono coppie più frequenti di altre, cioè che le coppie
sono casuali e uniformemente distribuite. Il test si può estendere a triplette, quadruplette
ecc. di numeri contigui. E' ovvio che se questo test venisse applicato direttamente alla
sequenza <Xn> o alla <Rn >, esso non avrebbe mai successo. Ciò perché in queste
103
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
sequenze un dato numero è sempre seguito da uno e un solo altro numero possibile.
Grazie, invece, all'effetto di troncamento operato dalla moltiplicazione dRn , si ottiene
in <Zn > la comparsa di uno stesso numero più volte nel periodo.
Si ricordi che il test chi-quadro deve esser applicato a osservazioni mutuamente
indipendenti. Per tal motivo, data la sequenza: Z0 , Z1 , Z2 …. Z n-1 , Zn , sarebbe un errore
applicare il test alle coppie Z0 Z1 , Z1 Z2 , Z2 Z3 , … Zn-1 Zn perché in tal caso se una coppia
ha il valore (q, r), la successiva darà il valore (r, p) e quindi. per una delle dimensioni,
dipende dalla precedente. Per tal motivo si osserveranno le coppie Z0 Z1 , Z2 Z3 , Z4 Z5 ecc.
cioè, in generale, le coppie (Z2j,Z2j+1 ) per 0≤j<n. Per applicare il test a n oggetti è quindi
necessario l'uso di 2n elementi della sequenza. Esaminando le coppie Z0 Z1 , Z2 Z3 .
Z4 Z5 ,.…, si saranno trascurate le Z1 Z2 , Z3 Z4 ecc. Per tal motivo, per esser completi,
occorrerà fare due test e verificare che entrambi siano soddisfatti.
Supponendo di applicare il test alla prima serie di coppie: Z0 Z1 , Z2 Z3 , Z4 Z5 ecc., si
conta quante volte un certo valore (q, r) ricorre. Poiché ogni Zi può assumere d valori
possibili (da 0 a d -1), abbiamo d2 coppie possibili (q, r) che sono: (0, 0), (0, 1),..., (0,
d-1), …, (d-1,0), (d-1,l),...,(d-1,d-1).
Le d2 coppie saranno assunte come altrettante categorie per il test χ2 , cioè k = d2 . Si
costruisce allora una matrice di d2 celle, ciascuna relativa a un possibile (q,r), e in
ciascuna si registra il numero di volte che il valore (q,r) si è osservato (fig. 2.24).
A ciascuna delle k = d2 categorie è associata la probabilità 1/d2 .
Se quindi la sequenza osservata è lunga 2n avremo osservato n oggetti e quindi, in
ciascuna cella sono attesi, nell'ipotesi dell'uniformità, n/d2 coppie. Si applica quindi il
test χ2 alla maniera convenzionale.
0
1
….
r
….
d-1
0
1
….
….
….
….
……
….
….
….
….
….
….
q
….
….
……
….
….
….
….
….
….
d-1
….
….
Fig. 2.24 Categorie per test seriale
Notare che, poiché deve essere n > 5k = 5d2 , per evitare di dover osservare
sequenze troppo lunghe occorre ridurre il valore di d. Se restasse d = 100, come nel
caso precedente, avremmo n > 50.000.
Se il test è esteso a triplette, allora la tavola precedente diventa un cubo con d3
caselle. In tal caso il valore di d deve essere ulteriormente ridotto. Questo problema si
accentua se si usano quadruplette ecc. Per tal motivo, in presenza di quadruplette,
104
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
quintuplette ecc., si adottano test diversi, come il test del poker, o il test del massimo,
che sono approssimazioni del seriale.
La figura 2.25 mostra i risultati del test seriale a due e tre dimensioni applicato a un
generatore di Lehmer del tipo Xi+1 = (17Xi-1 ) mod 512: 384 punti nel piano e 256 punti
osservati nel cubo, visualizzati da un terminale video.
Fig.2.25 - Test seriale a 2 e 3 dimensioni per generatore congruente. (Lewis e Payne,
1973; 0 Association for Computing Machinery 1973, per concessione.)
6.4.4 Il test dei “lagged product” o di autocovarianza
Un'altra misura dell'indipendenza dei numeri pseudocasuali è fornita da un
coefficiente ottenuto sommando i prodotti di coppie di numeri intervallati regolarmente
(lagged product).
Se k è la lunghezza dell’intervallo si definisce il coefficiente Ck per la sequenza ri (con
i=1, 2, …, N)
Ck = [1 /(N - k) ]
∑
N −k
i =1
ri . ri+k
con ri = elementi della sequenza (i = 1, 2, .... N) e k = ampiezza dell'intervallo.
E’ possibile dimostrare 6 che se non c'è correlazione tra ri e ri+k , i valori di Ck hanno
una distribuzione circa normale con media 0,25 e scarto quadratico:
σ = 13 N − 19k /(12N − k ) per k>0
L'aderenza della curva reale alla distribuzione normale si può misurare con un test del
χ2 .
6.4.5
Test del gap
6
Se N>> k, la normalità segue dal teorema del Limite centrale. La formula per la deviazione standard di
Ck segue dal fatto che la varianza di una somma è uguale alla somma delle varianze più due volte la
somma delle covarianze. Ogni ri ri+k ha varianza 7/144, e ci sono N-k di tali termini. Le uniche covarianze
diverse da zero sono quelle che hanno la forma cov(ri-k ri , ri ri+k )=3/144, e di queste covarianze ce ne sono
N-2k.
105
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
Il test del gap si esegue per verificare la casualità delle cifre in una sequenza di numeri.
Per ogni data cifra d, siamo interessati a verificare il numero delle cifre che si
presentano fino ad incontrare una nuova d.
Un gap di lunghezza k si verifica quando si verificano k cifre diverse da d fra due cifre
d. Due cifre d consecutive producono un gap di lunghezza k=0.
Per una sequenza di cifre veramente casuale la probabilità di ottenere un gap di
lunghezza k è data da
P(k) = (0,9)k (0,1)
Si calcolano quindi le frequenze teoriche che competono a ciascun valore di k.
Si verifica a questo punto quante volte ritroviamo il gap k=0, quante k=1, k=2,…, ecc.
Si applica il test del χ2 per confrontare i numeri di gap previsti con il numero di gap di
lunghezza k osservati. I valori dei χ2 ottenuti da diversi campioni possono essere
trattati come visto in precedenza nei casi analoghi.
6.4.6. Il test dei segni o dei runs
- Questo test mette in luce l'eventuale natura oscillatoria di sequenze di numeri
pseudocasuali. Dati N numeri r1 , r2 , … rn , si definisce una sequenza S binaria di N- 1
bits, in cui l'i- esimo termine è uguale a 0 se ri < ri+1 , ed uguale a 1 se ri > ri+1 . Una
successione di k zeri forma un run di zeri di lunghezza k e, similmente per le serie di l.
Il test consiste nel suddividere i runs a seconda della loro lunghezza, nel costruire la
distribuzione dei numero dei runs per ogni classe di lunghezza e confrontare la
distribuzione con quella teorica. Per runs di lunghezza k i valori attesi per sequenze
realmente a caso sono:
(2 N − 1)
per il numero totale di runs
3
(5 N + 1)
per runs di lunghezza 1
12
(11N − 14)
per runs di lunghezza 2
60
............................................................................................
2 [(k 2 + 3 k + 1) N - (k 3 + k 2 - k - 4)] / (k + 3)!
Per runs di lunghezza k con k<N-1
2
per runs di lunghezza N-1.
N!
Si esegue quindi un test di χ2 per verificare se un generatore di numeri pseudocasuali
è accettabile, ad un fiddato livello di significatività.
Una caratteristica tipica di sequenze non casuali è un eccesso di runs lunghi.
6.4.4. Test del poker (o delle partizioni)
Il test del poker è uno speciale test che serve a confrontare la frequenza di combinazioni
di cinq ue o meno cifre osservate in un numero casuale con le frequenze teoriche
previste per queste combinazioni.
Le combinazioni considerate sono le seguenti:
tutti diversi: abcde;
106
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
coppia: aabcd;
doppia coppia: aabbc;
tris: aaabc;
full: aaabb;
poker: aaaab;
colore: aaaaa.
Questo test considera n gruppi di cinque successivi numeri della sequenza Z5j, Z5j+1 , …,
Z5j+4), 0≤j<n. Esso opera, dunque, su sequenze lunghe 5n. I gruppi osservati vengono
suddivisi in k = 7 differenti categorie, corrispondenti alle configurazioni presentate in
precedenza.
Il test è inteso a verificare che tutte queste configurazioni siano presenti con la
probabilità prevista quando tutti gli Zi sono egualmente probabili. Se la sequenza <Zn>
è uniforme, le configurazioni osservate si distribuiranno nelle categorie secondo le
probabilità ps di ciascuna configurazione teorica. Nel mazzo del poker, infatti, tutti i
valori, dall'asso al re, sono egualmente probabili.
Allo scopo, si definisce una probabilità per ciascuna configurazione, si calcola il
numero di osservazioni attese in ciascuna e si conta il numero effettivo di osservazioni
cadute in ciascuna. Indi si applica il test chi-quadro alla maniera convenzionale.
I1 calcolo delle ps per le 7 categorie sopra introdotte, dà luogo per alcune a valori
molto piccoli, il che rende il test di difficile applicazione.
Una versione semplificata del test è quella che riduce a k = 5 il numero di categorie.
Allo scopo, detto s il numero di differenti valori all'interno di una configurazione,
avremo le categorie:
s = 1: aaaaa
s = 2: aaabb e aaaab
s=3: aabbc e aaabc
s= 4: aabcd
s=5: abcde
per le quali si può esprimere la probabilità:
d ( d −1)....( d − s + 1) h 
ps =
[6.12]
 
dh
s 
ove d è il numero di different i valori che può assumere ciascun Zi; h = 5 è il numero di
elementi che formano ciascuna configurazione. Il denominatore della [6.12] è il numero
di disposizioni con ripetizione di d elementi su 5 posti: al numeratore, invece, il
prodotto d(d-1) ... (d-s+1) dà il numero di disposizioni senza ripetizione di d elementi
h
su s posti, e il fattore   è il numero di Stirling di seconda specie, che fornisce il
 s
numero di modi in cui è possibile ripartire 5 oggetti distinguibili su s classi. E' noto
(Knuth, 1972) che:
 5
5
 5
  =1,   =15,   =25,
 1
2
 3
5
 5
  =10,   =1,
4
 5
mentre d assume valori usuali o vicini a
quelli del poker (ad es. d =8 oppure 10).
107
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
6.5 Generazione di distribuzioni qualsiasi
I numeri pseudocasuali con distribuzione uniforme giocano un ruolo fondamentale nella
generazione di numeri con distribuzione qualsiasi, diversa dall'uniforme. Il metodo più
diffuso per la generazione di eventi con legge qualsiasi è il metodo della trasformazione
inversa.
Denotiamo con r una variabile distribuita uniformemente nel campo [0,1], cioè con
densità di probabilità g(r) = 1.
Se vogliamo generare variabili aleatorie x con densità di probabilità f(x) data, occorre
prima ottenere la funzione di distribuzione F(x). Poiché F(x) è tale che 0 ≤ F(x) ≤ 1 si
può generare un numero a caso r distribuito uniformemente tra 0 e 1 e porre F(x) = r; di
qui si può ottenere x. Ossia, per ogni particolare valore r0 generato, è possibile trovare il
corrispondente valore x0 attraverso la funzione inversa di F(x) (fig. 2.27):
x0 = F -1 (r0 )
[2.13]
E' facile vedere che la legge di probabilità x così ottenuta è la funzione densità f(x),
applicando la [2.4].
Vediamo ora, operativamente, come si applica la trasformazione.
Esempio. Si vogliano generare variabili con legge uniforme comprese tra a e b (fig.
2.15).
Sarà
f ( x) =
1
(b − a)
ed
F(x) = x − a
ponendo pertanto:
r = F(x)
si ha:
x=F–1 (r)=r(b-a)+a
b −a
0≤F(x)≤1
0≤r≤1.
Applicando le regole su esposte esprimeremo,
nei prossimi paragrafi, le funzioni inverse
F-1 (r) di distribuzioni di probabilità molto
comuni, come la distribuzione esponenziale, la
gamma ecc. alle quali possono essere
approssimate molte distribuzioni empiriche.
Per molte altre distribuzioni di probabilità
è purtroppo impossibile, o estremamente
Figura 2.27 Trasforma zione inversa
difficile esprimere x in funzione di F-1 (r). In questi casi si ricorre a tabulazioni della
F(x) generalmente dedotte da osservazioni empiriche, come mostrato qui di seguito.
6.5.1 Generazione di distribuzioni approssimate continue
108
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
Si supponga che la distribuzione F(x) sia approssimata con una serie di segmenti
rettilinei come nella figura 2.14. La funzione è inizialmente definita nei punti xi(i= 0,
l,...,N) nei quali assume i valori Fi tali che F0 = 0 ed FN = 1. Per generare la variabile x
nei punti xi in cui la F è direttamente definita, basterà costruire una tabella che per ogni
Fi dà il corrispondente xi e leggerla estraendo numeri pseudocasuali r=Fi. Per generare
variabili x negli intervalli compresi tra i punti xi occorre fare un'interpolazione lineare e
cioè calcolare la pendenza della curva che unisce il punto (xi, Fi) al punto (xi+1 , Fi+1 ). In
particolare, si calcolerà
ai =
x i +1 − x i
,
Fi +1 − Fi
i=0,1, …, N-1
Tabella 2.1 1
i
Fi
xi
0 0,000
0
1 0,025 10
2 0,075
20
3 0,200
30
4 0,300
40
5 0,47S 50
6 0,625 60
7 0,825 70
8 0,92S 80
9 1,000
90
10 1,000 100
ai
400
200
80
100
57
66
50
100
130
-
Questi valori, possono essere portati nella stessa tabella, che avrà l'aspetto della tabella
2.11.
Questa può essere usata confrontando una sequenza di numeri random uniformi r
compresi tra 0 e 1 e i valori Fi.
Se r è uguale a uno dei valori Fi tabulati, allora si legge direttamente il corrispondente x.
Se invece è
Fi<r <Fi+1
(i=0, 1,...,N- 1)
allora la variabile generata è
x =xi+ai(r-Fi) Ad esempio, se è r= 0,300 allora x = 40; se invece è r = 0,250 allora è 0,200 <r < 0,300
e quindi sarà x = 30 + 100 (0,250 - 0,200) = 35.
6.5.2. Generazione di distribuzioni empiriche discrete
109
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
Non sempre è necessario approssimare numericamente una distribuzione, come nel caso
precedente ove era in gioco una variabile aleatoria continua (tempi di attesa), ed era
richiesto il passaggio da un numero discreto di osservazioni a una curva continua.
Se la variabile aleatoria è discreta, la generazione è più diretta. Supponiamo che la
variabile x sia rappresentata dal numero di oggetti che un cliente acquista in un negozio.
Osserviamo ad esempio un campione di n = 250 clienti e supponiamo di avere i risultati
della tabella 2.12: 25 clienti hanno acquistato un solo oggetto, 128 due ecc. La tabella
riporta anche la stima delle probabilità p(x), approssimate dalle percentuali di clienti che
hanno acquistato x oggetti. La figura 2.28 dà una rappresentazione della distribuzione.
L'approssimazione con le percentuali è ammissibile se n è sufficientemente grande. La
scelta di n si può fare fermandosi a quel valore al di sopra del quale p(x) non subisce più
apprezzabili variazioni.
Tabella 2.12
N. oggetti (x) N. Clienti
1
25
2
128
3
47
4
38
5
12
totali
250
p(x)
0,10
0,51
0,19
0,15
0,05
1,00
Fig. 2.28 Distribuzione empirica da generare
Poiché p(x) non è altro che la suddivisione dell'intervallo [0,1) in zone di
lunghezza proporzionale ai valori p(xi), i = 1, 2,..., 5 (fig. 2.29) un metodo per
generare x può essere quello di generare un numero random uniformemente distribuito
tra 0 e 1 e porre, secondo la regola precedente, x = xi se Fi-1 < r ≤ Fi, cioè se
p(x1 )+...+p(xi-1 )<r≤p(x1 )+...+p(xi).
Ad esempio, se si ottiene r = 0,73, r cade nell'intervallo appartenente a p(x3 ) e
quindi x = x3 = 3. Notare che non è necessario che i valori di x appaiano nella tabella
in un particolare ordine. L'ordine può soltanto influenzare la velocità di esecuzione del
programma. Supponendo di partire da F1 nell'esame della tabella, il numero medio di
confronti è minimizzato se i valori x sono messi in ordine di probabilità decrescenti.
E' facile convincersi che il metodo qui delineato equivale a una trasformazione inversa
operata su una curva di distribuzione cumulativa discreta.
110
Prof. Ing. Michele Marra – Corso di Laurea Specialistica in Ingegneria Gestionale –
Appunti delle Lezioni di Calcolo delle Probabilità e Statistica - Simulazione
I programmi di ricerca richiedono in genere discrete quantità di tempo.
Figura 2.29 – Generazione di distribuzione discreta
Accettando di spendere di più in memoria, si può adottare il metodo seguente
(Marsaglia, 1963). Si usano 1000 celle di memoria indirizzabili per nome (memoria
associativa, o indirizzamento indiretto) con i nomi da 000 e 999. Vi si immagazzinano
100 numeri del valore x1 , 510 del valore x2 , 190 del valore x3 , 150 del valore x4 , 50 del
valore x5 . Si estrae poi un numero a caso e se esso è, ad esempio, r = 0, d1 d2 d3 d4 il
numero xi presente nella locazione d1 d2 d3 è assunto come valore di x.
6.5.3. Metodo di reiezione
Per generare variabili aleatorie x di legge arbitraria è possibile usare un altro
metodo, detto di accettazione e reiezione. Sia x una variabile che assume valori in un
intervallo finito u ≤ x ≤ v e sia f(x) la sua funzione densità. Il metodo consiste
sostanzialmente nel considerare f(x) racchiusa in un rettangolo di base u, v e generare,
con un generatore uniforme, una coppia (x,y) di coordinate di un punto nell'area del
rettangolo. Se il punto cade sotto la curva f(x), si accetta l'ascissa x come numero
generato, diversamente si rigetta la coppia e se ne genera un'altra. Formalmente ciò si
schematizza nei seguenti passi:
1) Standardizzare f(x) usando un fattore di scala d tale che d*f(x) ≤1 per u≤x≤v.
2) Scegliere a caso x in maniera uniforme con la formula x = r(v- u)+u, ove r è un
numero random uniforme in [0,1)
3) Generare coppie (r1 , r2 ): ogni coppia che soddisfa la relazione r2 ≤d*f [r1 (v- u) +
u] è accettata e si usa x = r1 (v - u) + u come valore casuale generato.
E' facile convincersi che se x è scelto a caso secondo la regola x = r1 (v- u) + u ed è
rigettato se r2 > d*f(x), allora la densità degli x accettati è esattamente f(x). E' possibile
dimostrare (Tocher, 1963) che il numero medio di coppie da generare prima di una
accettabile è 1/d. Questo metodo può quindi risultare particolarmente inefficiente per
certe funzioni di probabilità.
111