Documente Academic
Documente Profesional
Documente Cultură
1.1
Uma seqncia de nmeros aleatrios, x1, x2,..., deve possuir duas importantes propriedades:
uniformidade e independncia. Todo nmero aleatrio xi uma amostra independente de uma
distribuio uniforme e contnua no intervalo de zero a 1. Desta forma, a funo densidade de
probabilidade de x dada por:
1, 0 x 1
f (x) =
0, outro valor
f(x)
1
x2
E ( x ) = xdx =
0
2
=
0
1
2
x3
V ( x ) = x dx [ E ( x )] =
0
3
1
1
1
=
2
12
1.2
Para melhor compreender por que existem vrios mtodos geradores de nmeros aleatrios e
por que alguns so considerados melhores do que outros, exemplifica-se como estes geradores
operam. A tcnica empregada mais comum faz uso de uma relao recursiva na qual, o
prximo nmero na seqncia uma funo do ltimo ou dois ltimos nmeros gerados, isto
,
x n = f ( x n 1 , x n 2 ,...)
Um exemplo desta funo :
xn = 5 xn-1 + 1 mod 16
Iniciando a srie com xo = 5, obtemos x1 da forma que segue:
x1 = 5(5) + 1 mod 16 = 26 mod 16 = 10
Os primeiros 32 nmeros obtidos por meio deste procedimento so: 10, 3, 0, 1, 6, 15, 12, 13,
2, 11, 8, 9, 14, 7, 4, 5, 10, 3, 0, 1, 6, 15, 12, 13, 2, 11, 8, 9, 14, 7, 4, 5.
Observa-se que os valores de x so inteiros entre 0 e 15. Dividindo-os por 16, obtm-se uma
seqncia de nmeros aleatrios com valores entre 0 e 1. Para o exemplo acima os nmeros
sero:
0,6250
0,1250
0,6250
0,1250
0,1875
0,6875
0,1875
0,6875
0,0000
0,5000
0,0000
0,5000
0,0625
0,5625
0,0625
0,5625
0,3750
0,8750
0,3750
0,8750
0,9375
0,4375
0,9375
0,4375
0,7500
0,2500
0,7500
0,2500
0,8125
0,3125
0,8125
0,3125
Fica claro que, conhecida a funo f, pode-se gerar novamente a seqncia sempre que se
fornece o valor inicial de x0. Este valor, usado para iniciar a seqncia, conhecido por
semente.
Uma importante observao sobre o exemplo dado, que a funo f determinstica. Desta
forma, dada uma semente, pode-se afirmar, com 100% de certeza, qual sero os nmeros na
seqncia. Embora estes nmeros sejam considerados randmicos, no sentido de serem
aprovados em testes estatsticos de aleatoriedade, so, de fato, pseudo-aleatrios. Embora isto
seja verdadeiro, o objetivo em qualquer mtodo de gerao produzir uma seqncia de
nmeros aleatrios entre zero e 1, a qual possua propriedades semelhantes aquelas dos
verdadeiros nmeros aleatrios. Alm disso, os nmeros pseudo-aleatrios muitas vezes
apresentam vantagens sobre os verdadeiramente-aleatrios. Por exemplo, quando se trata de
empreg-los em simulaes nas quais desejvel a possibilidade de se repetir o experimento
simulado e, portanto, a seqncia de nmeros aleatrios, da maneira exata como foi executada
anteriormente. claro que se o interesse for uma seqncia diferente, pode-se, a qualquer
momento, fazer uso de valores diferentes para a semente. Desta forma, os geradores de
nmeros aleatrios nos fornecem um controle adicional sobre a possibilidade de reproduzir os
resultados.
Outra importante caracterstica evidenciada no exemplo apresentado, que somente os 16
primeiros valores so nicos. O 17 igual ao primeiro e o restante da seqncia apenas
uma repetio cclica dos primeiros 16 nmeros. Dito de outra forma, o gerador utilizado
possui um comprimento de ciclo igual a 16 valores. Alguns geradores no repetem uma parte
inicial do ciclo, chamada de cauda. Neste caso, o comprimento de seu perodo dado pela
soma do comprimento L da cauda mais o comprimento C do ciclo (Figura 2).
Semente
Cauda
Comprimento do Ciclo
Perodo
1.3
O mtodo Congruente Linear considerado o mais popular, entre tantos outros mtodos
geradores de nmeros aleatrios e, por esta razo, ser tratado com um pouco mais de
detalhes. Alm deste, se tratar tambm de algumas de suas extenses, s quais so reportados
seqncias com longos perodos. Muitos outros mtodos podero ser encontrados nas
referncias como, por exemplo, em Law e Kelton (1991) e Bratley, Fox e Schrage (1987).
1.3.1 Mtodo Congruente Linear (MCL)
Este mtodo, tambm conhecido como mtodo congruente misto, foi primeiramente
divulgado em um trabalho desenvolvido pelo Prof. D. H. Lehmer, em 1951, quando dos
experimentos executados pelo computador ENIAC no MIT, conforme citado por Jain, [1991].
Em suas pesquisas ele descobriu que restos de sucessivas potncias de um nmero possuem
boas caractersticas de aleatoriedade. Ele obtinha o n-simo nmero de uma seqncia,
tomando o resto da diviso da n-sima potncia de um inteiro a por um outro inteiro m. Isto :
x n = a n mod m
Uma expresso equivalente usada para o clculo de xn aps calcular xn+1 dada por:
x n = ax n 1 mod m
2. Para que a computao de mod m seja eficiente, m deve ser uma potncia de 2, isto , 2k.
Neste caso, o mod m poder ser obtido truncando-se o resultado direita por k bits.
3. Se b for diferente de zero, o mximo perodo possvel m obtido se e somente se:
a) os inteiros m e b sejam primos, um em relao ao outro, isto , no possuam nenhum
outro fator alm de 1;
b) todo nmero primo que um fator de m, tambm um fator de a-1;
c) a-1 um mltiplo de 4, se o inteiro m mltiplo de 4.
4. Se b = 0, e m potncia de 2, o maior perodo possvel ser P = m / 4, considerando que: x0
(semente) seja um nmero impar e o multiplicador (a) seja dado por a = 8k + 3 ou a = 8k +
5, para algum k = 0, 1, 2, .....
Observe que todas estas condies so alcanadas se m = 2k, a = 4c + 1 e b = impar. Neste
caso, c, b e k so inteiros positivos.
Um gerador que possua o maior perodo possvel chamado de gerador de perodo completo.
Nem todos os geradores de perodo completo so igualmente bons. A questo da
autocorrelao deve tambm ser considerada. Aqueles com baixa correlao so, obviamente,
preferidos. O exemplo abaixo revela tais diferenas. Os dois geradores possuem o perodo
completo, mas o primeiro apresenta uma correlao de 0,25 entre xn-1 e xn, enquanto que no
segundo esta correlao menor do que 2-18.
Xn = (234 + 1)xn-1 + 1 mod 235
Xn = (218 + 1)xn-1 + 1 mod 235
Vejamos um exemplo de gerao de nmeros aleatrios usando o MCL.
Exemplo 1
Use o MCL para gerar uma seqncia de nmeros aleatrios entre zero e 1, com os seguintes
parmetros: x0 = 27, a = 17, b = 43 e m = 100: Observe que os valores inteiros gerados, sero
todos entre zero e 99, em razo do mdulo. Observe tambm, que estaro sendo gerados
inteiros aleatrios e no nmeros aleatrios. Tais inteiros podem ser transformados em
nmeros aleatrios (Ris) entre zero e 1, aplicando-se a relao:
Ri = xi / m, i = 1,2,...
A seqncia de valores para xi e subseqentes Ri, apresentada abaixo:
x0 = 27
x1 = (17 . 27 + 43) mod 100 = 502 mod 100 = 2
R1 = 2 / 100 = 0,02
x2 = (17 . 2 + 43) mod 100 = 77 mod 100 = 77
R2 = 77 / 100 = 0,77
x3 = (17 . 77 + 43) mod 100 = 1352 mod 100 = 52
R3 = 52 / 100 = 0,52
.
5
.
.
1.3.2 Mtodo Congruente Linear Multiplicativo (MCLM)
Uma das derivaes do MCL o mtodo congruente linear multiplicativo. Neste mtodo, o
valor do incremento b = 0. Desta forma, o gerador fica reduzido a seguinte expresso:
x n = ax n 1 mod m
Exemplo 2
Encontre o perodo para o gerador com os seguintes parmetros: a = 13, m = 26, e x0 = 1, 2, 3
e 4. A soluo dada na tabela 1.
i
xi
xi
xi
xi
0
1
2
3
4
1
13
26
39
52
2
41
18
59
36
3
21
42
63
20
4
17
34
51
4
5
29
58
23
6
57
50
43
7
37
10
47
8
33
2
35
9
45
7
10
9
27
11
53
31
12
49
19
13
61
55
14
25
11
15
5
15
16
1
3
Tabela 1: Variao dos perodos para vrias sementes
Observa-se que com as sementes mpares (1 e 3), possvel a obteno de perodos com 16
elementos (P = m/4 = 64/4 = 16). Para as sementes pares (2 e 4), os perodos obtidos tm
comprimentos 8 e 4, respectivamente. Observa-se, tambm que a obedece a frmula 8k + 5,
com k = 1, exigida para o alcance de perodos mximos.
Afirmou-se anteriormente, que qualquer mtodo gerador de nmeros aleatrios, incluindo o
MCL, deve gerar uma seqncia de valores uniformes e independentes. Alm de tais
6
a = 16.807
m = 2.147.483.647
q = m div a = 2.147.483.647 div 16.807 = 12.7773
r = m mod a = 2.147.483.647 mod 16.807 = 2.836
Jain (1991) apresenta uma rotina em PASCAL para este mtodo, a qual reproduzida abaixo:
____________________________________________________
FUNCTION Random (VAR x: INTEGER) : REAL;
CONST
a = 16807;
m = 2147483647;
q = 127773;
r = 2836;
(* Multiplicador *)
(* Mdulo *)
(* m div a *)
(* m mod a *)
VAR
x_div_q, x_mod_q, x_new: INTEGER;
BEGIN
x_div_q := x DIV q;
x_mod_q := x MOD q;
x_new := a* x_mod_q - r* x_div_q;
IF x_new > 0 THEN x := x_new ELSE x := x_new + m;
Random := x/m;
END;
_____________________________________________________
Segundo Jain (1991), esta rotina pode ser implementada em computadores cujo maior inteiro
suportado seja 231 - 1 ou maior do que isso. O mesmo autor apresenta ainda uma rotina para
nmeros reais, caso o maior inteiro suportado pelo sistema seja menor do que o especificado.
Um bom teste para uma rotina que implemente este mtodo, calcular o valor de x10.000
iniciando com x0 = 1. Uma correta implementao chegar ao valor 1.043.618.065.
1.4
A literatura sobre o assunto reporta a existncia de pelo menos cinco mtodos bsicos
voltados para a gerao de amostras aleatrias:
1.
2.
3.
4.
5.
Transformao Inversa;
Transformao Direta;
Convoluo;
Aceitao/Rejeio;
Propriedades Especiais;
O mtodo a ser empregado na gerao das variveis aleatrias depende do tipo de distribuio
e da eficincia que se est buscando no processo. Sobre as distribuies que sero tratadas a
seguir, ora se far uso de um ora de outro mtodo, conforme os mesmos aparecem na
literatura, reportando os dois critrios acima expostos. Neste texto introdutrio ao assunto, se
prefere no detalhar os mtodos, em particular, mas mostrar a forma como se apresentam,
quando empregados na obteno de variveis aleatrias que seguem esta ou aquela particular
distribuio de probabilidades.
1.4.1 Gerao de Distribuies Discretas
Dentre as muitas distribuies tericas discretas possveis de serem artificialmente geradas
apresentam-se, particularmente, os procedimentos associados s distribuies: Geomtrica,
Poisson e Emprica Discreta.
1.4.1.1
Distribuio de Poisson
p ( x ) = P( X = x ) = e
x
x!
Gerar dois nmeros, segundo uma distribuio de Poisson, com = 0,2. Primeiramente,
computa-se o valor de e = e 0,2 = 0,8187 . Na seqncia, obtm-se um conjunto de nmeros
aleatrios e se iniciam os procedimentos estabelecidos nos passos de 1 a 3 anteriormente
firmados, os quais so apresentados na tabela 2.
Gerao do
primeiro valor
Gerao do
segundo valor
Passo
1
2
3
1-3
1
2
3
2
3
2
3
Gerao de P, n e X
n = 0, P = 1
R1 = 0,4357; P = 1.R1 = 0,4357
como P = 0,4357 < e-0,2 < 0,8187; aceita-se X = 0
R1 = 0,4146 leva a: X = 0
n = 0, P = 1
R1 = 0,8353; P = 1.R1 = 0,8353
como P e ; rejeita-se n = 0 e retorna-se ao
passo 2 com n = 1
R2 = 0,9952; P = P.R2 = 0,8353.0,9952 = 0,8313
como P e ; rejeita-se n = 1 e retorna-se ao
passo 2 com n = 2
R3 = 0,8004; P = P.R3 = 0,8313. 0,8004 = 0,6654
como P = 0,6654< e-0,2 < 0,8187; aceita-se X = 2
Tabela 2: Valores para a varivel aleatria Poisson
Como pode ser observado nos resultados, foram necessrios 4 nmeros aleatrios para gerar 2
variveis de Poisson (X = 0 e X = 2). Numa longa simulao, com cerca de 1000 valores
Poisson com = 0,2, sero necessrios, aproximadamente 1.000( +1) ou 1200 nmeros
aleatrios. Segundo Schrage (1987) e Law (1991), para valores maiores do que =15, a
ineficincia computacional muito grande e uma aproximao pela distribuio normal tornase computacionalmente mais adequada.
1.4.1.2
Uma distribuio emprica pode ser tanto discreta quanto contnua. Sua aplicao costuma
estar associada impossibilidade de determinao da distribuio terica de probabilidades
da varivel aleatria sob estudo. Neste caso, ela usada como uma aproximao da
verdadeira distribuio.
Para gerar uma varivel aleatria que tenha um comportamento semelhante ao determinado
por distribuio emprica discreta conhecida, necessrio que, inicialmente, se determine as
freqncias relativas acumuladas da distribuio. Para exemplificar os procedimentos,
imagine que uma amostragem realizada sobre determinada varivel aleatria discreta tenha
resultado nos valores da tabela 3:
x
0
1
2
p(x)
0,50
0,30
0,20
F(x)
0,50
0,80
1,00
F (x ) =
0,8
1,0
x<0
0 x <1
1 x < 2
2x
Uma vez que tais informaes estejam disponveis, aplica-se o mtodo da transformao
inversa que, neste caso, torna-se um processo de pesquisa em uma tabela de valores, num
procedimento muito semelhante ao do mtodo de Monte Carlo.
Exemplifica-se esta aplicao considerando a varivel aleatria x da tabela 1.4. Suponha que
se tenha gerado um nmero aleatrio R1 = 0,73. Traando um grfico da funo densidade de
probabilidade acumulada, verifica-se que para F(x) = R1, o correspondente valor de x ser 1,
isto , X = 1 (ver Grfico 1). Logo, graficamente verifica-se que R1 = 0,73 transformado em
X = 1.
F(x)
1
0,73
0,5
X1 = 1
i
1
2
3
Entrada ri
0,50
0,80
1,00
Sada xi
0
1
2
12
ento X1 = xi. Como r1 = 0,5 < R1 = 0,73 r2 = 0,8 ento X1 = x2 = 1. O esquema de gerao
resumido como segue:
0, R 0,5
1.4.2.1
Distribuio Uniforme
Uma varivel aleatria x tem distribuio uniforme sobre um intervalo [a, b], se sua funo
densidade de probabilidade (fdp) dada por:
f (x) =
1
b a
axb
A tcnica mais utilizada para a obteno de uma varivel aleatria uniformemente distribuda
a da transformao inversa. A frmula a seguinte:
x = a + (b a ) R
1. Gerar R;
2. Calcular x = a + (b a ) R .
Exemplo 6
Gerar trs valores de uma distribuio uniforme no intervalo [10, 50]. Usando uma tabela de
valores aleatrios, obtm-se R1 = 0,932; R2 = 0,105 e R3 = 0,687. Aplicando-se o mtodo
proposto obtm-se os resultados mostrados na Tabela 5:
13
Passo
1
2
1
2
1
2
Valor de Ri e de xi
R1 = 0,932
x1 = 10 + (40)0,932 = 47,28
R2 = 0,105
x2 =10 + (40)0,105= 14,2
R3 = 0,687
x3 = 10 + (40)0,687= 37,48
1.4.2.2
Distribuio Triangular
Uma varivel aleatria x tem uma distribuio triangular se sua fdp dada por:
2( x a )
( b a )( c a ) ,
f ( x ) = 2( c x )
,
( c b )( c a )
axb
b<xc
ba
se 0 R
a + R (b a )(c a ) ,
ca
x=
ba
c (1 R )(c b)(c a ) , se
< R 1
ca
Exemplo 7
Gerar trs valores de uma distribuio triangular com parmetros (0, 1, 2). Usando uma tabela
de valores aleatrios, obtm-se R1 = 0,544; R2 = 0,747 e R3 = 0,449. Aplicando o mtodo
proposto chega-se a:
2R
x=
2 2(1 R )
0 R
1
2
1
< R 1
2
Valor de Ri e de xi
R1 = 0,544
x1 = 2- 2(1 0,544 ) = 1,045
R2 = 0,747
14
2
1
2
1.4.2.3
Distribuio Exponencial
Uma varivel aleatria x tem uma distribuio exponencial se sua fdp dada por:
f ( x ) = e x , x 0
O parmetro interpretado como sendo o nmero mdio de ocorrncias por unidade de
tempo, enquanto a razo 1 representa o tempo mdio entre as ocorrncias.
Aplicando-se o mtodo da transformao inversa para a obteno de uma varivel aleatria x
com distribuio exponencial resulta na seguinte relao:
xi = ln(1 Ri )
Uma vez que (1 - Ri), da mesma forma que Ri, possui distribuio uniforme no intervalo [0,
1], pode-se substituir (1 - Ri) por Ri na expresso acima.
Exemplo 8
Gerar valores de uma distribuio exponencial com parmetro =1. De acordo com o mtodo
exposto acima, cada Ri gera um correspondente xi conforme mostrado na Tabela 7.
i
Ri
xi
1
0,1306
2
0,0422
3
0,6597
4
0,7965
5
0,7696
0,1399
0,0431
1,0779
1,5920
1,4679
1.4.2.4
Distribuio Normal
Uma varivel aleatria x tem uma distribuio normal se sua fdp dada por:
f ( x) =
( x)2
2 2
< x <
B = (2 ln R ) 2
Demonstra-se, tambm que o angulo uniformemente distribudo entre 0 e 2 radianos. A
combinao destas relaes nos fornece as duas equaes abaixo, as quais permitem a
obteno de um par de variveis aleatrias com distribuio normal padronizada, a partir de
dois nmeros aleatrios R1 e R2.
Z 1 = 2 ln R1 cos(2R2 )
Z 2 = 2 ln R1 sen(2R2 )
Exemplo 9
Considerando as equaes acima, gerar dois valores com distribuio normal padronizada a
partir de R1 = 0,1758 e R2 = 0,1489.
Z1 = [-2 ln (0,1758)] cos ( 2 0,1489) = 1,11
Z2 = [-2 ln (0,1758)] sen ( 2 0,1489) = 1,50
Para a obteno de variveis aleatrias normais xi, com mdia e desvio-padro , deve-se
aplicar a transformao xi = + Zi aos valores da normal padronizada. Por exemplo, para
16
1.5
Sumrio
Referncias Bibliogrficas
1. Banks, J. e Carson, J.S., Disrete-Event System Simulation, Prendice-Hall, Englewood
Cliffs, NJ, 1984.
2. Banks, J. Carson, J.S. e Nelson, B.L., Disrete-Event System Simulation, 2nd ed., PrendiceHall, Englewood Cliffs, NJ, 1996.
3. Law, A.M. e Kelton, W.D., Simulation Modeling and Analysis, 2nd ed., McGraw-Hill,
NY, 1991
4. Bratley, P., Fox, B. L. e Schrage, L. E., A Guide to Simulation, 2nd. Ed., Springer-Verlag,
NY, 1987.
5. Dudewicz E. J. e Karian Z. A., Modern Design and Analysis of Discrete-Event Computer
Simulations, IEEE Computer Society Prees, 1985.
6. Freitas Filho, P.J., Introduo Modelagem e Simulao de Sistemas, VisualBooks, 2008
7. Scharage, L. E., A More Portable FORTRAN Randon Number Generator, ACM
Transactions on Mathematical Software, 5(2),132-138, 1979.
8. Jain, R., The Art of Computer Systemns Performance Analysis, Jhon Wiley & Sons, 1991.
9. Silva, V.L., Monte-Mor, J.A., Marcellino, F.J.M., Soma, N. Y., Interface Amigvel para o
Diehard e Avaliao de Geradores de Nmeros Pseudo-Aleatrios, DCC-ITA, 2003
17