You are on page 1of 17

UMA INTRODUO AOS MTODOS DE GERAO DE NMEROS E

VARIVEIS ALEATRIAS PARA APLICAES EM SIMULADORES

A gerao de nmeros e variveis aleatrias um ingrediente fundamental em qualquer


programa de simulao, comercial ou no. Na grande maioria dos programas comerciais, este
processo transparente para o usurio, restando a este apenas definir os parmetros desta ou
daquela distribuio de probabilidades desejada. Este texto introdutrio est voltado para o
leitor que pretende desenvolver programas de simulao com base em uma linguagem de
propsito geral ou para aqueles desejosos de uma melhor compreenso dos conceitos e
tcnicas envolvidas nos processos de gerao de nmeros e variveis aleatrias que se
encontram presentes nas linguagens especficas de simulao.

Tpicos

1.1 Propriedades dos Nmeros Aleatrios


1.2 Propriedades Desejadas aos Geradores de Nmeros Aleatrios
1.3 Mtodos de Gerao de Nmeros Aleatrios
1.4 Gerao de Variveis Aleatrias
1.5 Sumrio
Referncias Bibliogrficas

1.1 Propriedades dos Nmeros Aleatrios

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

A funo densidade de probabilidade mostrada na Figura 1.

f(x)

0 1 x

Figura 1: FDP para nmeros aleatrios

O valor esperado para cada xi dado por:

1
1
x2 1
E ( x ) = xdx =
1
=
0 2 0
2

A varincia por sua vez dada por:

1 2
x3 1 1
V ( x ) = x dx [ E ( x )] =
1
2 2
=
0 3 2 12
0

Algumas das conseqncias da uniformidade e independncia so as seguintes:

1. Se o intervalo de [0, 1] subdividido em n classes, ou subintervalos de igual tamanho, o


valor esperado de observaes em cada intervalo ser de N n , onde N o nmero total de
observaes.
2. A probabilidade de observar um valor em um particular intervalo independente dos
valores previamente obtidos.

1.2 Propriedades Desejadas aos Geradores de Nmeros Aleatrios

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,1875 0,0000 0,0625 0,3750 0,9375 0,7500 0,8125


0,1250 0,6875 0,5000 0,5625 0,8750 0,4375 0,2500 0,3125
0,6250 0,1875 0,0000 0,0625 0,3750 0,9375 0,7500 0,8125
0,1250 0,6875 0,5000 0,5625 0,8750 0,4375 0,2500 0,3125

2
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

Figura 2: Comprimento do ciclo, cauda e perodo de gerador de nmeros aleatrios

As propriedades desejadas em um gerador de nmeros aleatrios so as seguintes:

1. Deve ser computacionalmente eficiente: Uma vez que as simulaes podem necessitar da
gerao de, at mesmo, milhes de nmeros aleatrios em cada execuo, o tempo para
processar cada gerao deve ser mnimo;
2. O perodo deve ser muito longo: Um perodo curto pode fazer com que haja a reciclagem
da seqncia de nmeros aleatrios, resultando em uma repetio da seqncia de eventos.
Como conseqncia, pode haver uma limitao do perodo til de uma rodada de
simulao.
3. Os sucessivos valores devem ser independentes e uniformemente distribudos: A
correlao entre os diversos valores gerados deve ser pequena. A correlao, se
significativa, indica dependncia.

A duas primeiras propriedades so facilmente alcanveis. A terceira, no entanto, requer uma


srie de testes estatsticos para garanti-la. A literatura sob o tema [9] oferece e analisa uma

3
srie de mtodos geradores de nmeros aleatrios consagrados. Neste texto introdutrio, se
trata, principalmente, do mais utilizado deles, isto , o mtodo Congruente Linear.

1.3 Mtodos de Gerao de Nmeros Aleatrios

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

Os parmetros a e m so chamados de multiplicador e mdulo respectivamente. Ainda


segundo Jain (1991), as escolhas de Lehmer para estes parmetros foram a = 23 e m = 108 +
1. Tais valores foram baseados na facilidade de implementao no ENIAC, que era uma
mquina de oito dgitos decimais.

Muitas das propostas atuais so generalizaes da proposta de Lehmer e seguem a seguinte


frmula:

x n = ax n 1 + b mod m

Os valores de xn so inteiros entre 0 e m-1. As constantes a e b so positivas.

A popularidade dos geradores baseados neste mtodo deve-se ao fato de serem facilmente
analisados e de algumas garantias de suas propriedades dadas pela teoria das congruncias
[Dudewicz e Karian (1985)].

De maneira geral, a escolha dos valores de a, b, e m afeta o perodo e a autocorrelao na


seqncia. Vrios pesquisadores estudaram tais influncias. O resumo destes resultados so
apresentados nas referncias Jain (1991), Banks (1996), Law (1991) e [Dudewicz e Karian
(1985)]., e so apresentados abaixo:

1. O mdulo de m deve ser grande. Uma vez que os valores de x estaro entre 0 e m-1, o
perodo nunca ser maior do que m;

4
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

Computacionalmente falando, os geradores baseados no MCLM so mais eficientes do que


aqueles com base no MCL. Uma vez que no existe o envolvimento de adies, o tempo de
processamento necessrio se reduz. Tal eficincia pode ser ainda maior quando m assume
uma potncia de 2, fazendo com que, desta forma, a operao mod seja trivial. Podem-se
destacar dois mtodos multiplicativos derivados do MCLM, aqueles com m = 2 k e aqueles
com m 2 k . Abaixo um exemplo empregando o MCLM com m = 2 k .

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
propriedades, necessrias a um bom gerador, algumas propriedades secundrias tambm so
requeridas. Dentre estas se salienta a da mxima densidade, isto , a necessidade de que os
valores assumidos por Ri, i = 1, 2, ..., no deixem grandes folgas ou buracos no intervalo [0,
1]. O espao entre os valores de Ri deve ser uniforme e mnimo. No caso do gerador deste
exerccio, tais folgas so demasiadamente grandes. Os valores gerados para x0 = 1 so {1, 5,
9, 13,...,53, 57, 61}. A folga neste caso pode ser calculada pela relao entre dois valores
consecutivos, isto : folga = 5/64 - 1/64 = 0,0625. Este um valor considerado muito grande
para a maioria das aplicaes. O gerador exemplificado no vivel para, praticamente,
qualquer tipo de aplicao devido ao curto perodo e a grande folga. O exemplo, no entanto,
demonstra os cuidados necessrios para com os parmetros dos geradores.

A propsito, velocidade e eficincia computacional so elementos sempre da maior


importncia quando se trata do uso de computadores digitais. O exemplo a seguir, adaptado
de Banks (1996), mostra que uma boa escolha do mdulo sempre traz benefcios neste
sentido.

Exemplo 3

Velocidade e eficincia sempre so beneficiadas quando a escolha de m uma potncia de 2


ou muito prximo disso. Uma vez que a maioria dos computadores digitais usa uma
representao binria dos nmeros, a operao de clculo do resto sempre conduzida mais
eficientemente quando m = 2k. Aps o clculo de axi + b, xi+1 obtido pela retirada do dgito
binrio mais a esquerda de axi + b e pelo uso do k-simo dgito binrio mais a direita.

Um exemplo proposto por Banks (1996), usando o formato decimal, (de mais fcil
compreenso), ilustra, por analogia, tal mecanismo. Assume-se que m = 102 = 100, a = 19, c
= 0 e x0 = 63 e gera-se uma srie de nmeros aleatrios usando a equao do MLC.

x0 = 63
x1 = (19)(63) mod 100 = 1197 mod 100 = 97 (1197/100 = 11,97. k=2 dgitos direita = 97)
x2 = (19)(97) mod 100 = 1843 mod 100 = 43
x3 = (19)(43) mod 100 = 817 mod 100 = 17
.
.
No caso m uma potncia de 10, isto , m = 10k e a operao do mdulo (ou de determinao
do resto) realizada tomando-se os k dgitos (decimais neste caso), mais direita.

Para encerrar esta seo, apresenta-se um exemplo de um gerador ainda em uso em muitas
rotinas para a gerao de nmeros aleatrios, presentes em programas comerciais. Os valores
dos parmetros satisfazem as condies para permitir P = m - 1 (maior do que 2 bilhes). Os
valores dos parmetros so: m = 231 - 1 = 2.147.483.647 (que um nmero primo), a = 75 =
16.807 e c = 0. A semente x0 = 123.456. Os primeiros nmeros gerados sero:

x1 = (75)(123.456) mod (231 - 1) = 2.074.941.799 mod (231 - 1) = 2.074.941.799


R1 = 2.074.941.799 / 231 = 0,9662
x2 = (75)(2.074.941.799) mod (231 - 1) = 559.872.160
R2 = 559.872.160 / 231 = 0,2607

7
x3 = (75)(559.872.160) mod (231 - 1) = 1.645.535.613
R3 = 1.645.535.613 / 231 = 0,7662
.
.
Observe-se que nesta rotina a diviso feita por m + 1, no lugar de m. No entanto, para
grandes valores de m o efeito insignificante.

Duas precaues importantes devem ser consideradas quando da implementao das rotinas
computacionais referentes aos geradores aqui mencionados. A primeira delas diz respeito s
propriedades dos mtodos. Todo o processo computacional envolvido deve garantir tais
propriedades. Para tanto, toda a computao deve ser feita de forma exata, sem
arredondamentos. Em outras palavras, isto significa trabalhar com aritmtica inteira sem erros
de excesso ou estouro de capacidade (overflow). Em algumas linguagens a computao
realizada com nmeros reais. Neste caso, os cuidados devem recair sobre os possveis
arredondamentos, os quais podem causar considerveis redues no perodo.

A segunda preocupao na implementao do MLC e suas derivaes dizem respeito


grandeza do produto a.xn-1, o qual pode exceder a capacidade para o maior inteiro permitido
no sistema. Uma possvel alternativa para contornar este problema foi apresentada por
Schrage (1979), citado por Jain (1991). A base do MLC foi apresentada na forma da seguinte
identidade:
ax mod m = g(x) + mh(x)
onde
g(x) = (ax mod q) - r(x div q)
e
h(x) = (x div q) - (ax div m)

onde, q = m div a e r = m mod a. A operao A div B equivalente a dividir A por B


truncando o resultado (isto , removendo a parte fracionria do nmero). Pode ser mostrado
que para todo os valores de x no intervalo 1, 2, ..., m-1, as expresses envolvendo g(x) so
todas menores do que m-1. Tambm pode ser mostrado que se r < q, h(x) ser 0 ou 1 e poder
ser inferido a partir de g(x) e, h(x) 1 se e somente se g(x) for negativo. Desta forma, a
operao ax, que pode causar overflow, no precisar ser executada. O exemplo a seguir
ilustra a destes conceitos.

Exemplo 4

Considere a implementao do seguinte MCLM:

xn = 75 xn-1 mod (231 - 1)


ou
xn = 16.807 xn-1 mod 2.147.483.647

O produto de axn-1 pode ser to grande quanto 16.807 x 2.147.483.647 1.03 x 245. A
implementao deste gerador usando aritmtica inteira produzira um overflow, a menos que o
processador suporte inteiros de 46 bits ou mais. Neste caso, a implementao do mtodo de
Schrage, feita da seguinte maneira:

8
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; (* Multiplicador *)
m = 2147483647; (* Mdulo *)
q = 127773; (* m div a *)
r = 2836; (* 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 Gerao de Variveis Aleatrias

Neste tpico trata-se dos mtodos e procedimentos computacionais dedicados gerao de


variveis aleatrias com caractersticas especficas de alguma das diversas distribuies
tericas de probabilidades. A necessidade de tais variveis pode ser atestada nos inmeros
exemplos de sistemas de filas e outros. Por exemplo, tempos entre chegadas, tempos de
servio ou demandas por produtos, so elementos muitas vezes de natureza aleatria e que
necessitam serem incorporados aos modelos de simulao, mantendo estas caractersticas
(Freitas, 2008). Uma srie de procedimentos envolvendo tcnicas de amostragem, estimao
de parmetros e testes de aderncia, so necessrios para que se possa bem determinar o tipo
de distribuio terica que determina o comportamento da(s) varivel(eis) sob tratamento.
Aqui, considera-se apenas a necessidade de gerao computacional de tais variveis. Todos os
mtodos baseiam-se na prvia gerao de um nmero aleatrio R, uniformemente distribudo
sobre o intervalo (0, 1). Para efeito de notao, x ser uma varivel aleatria com funo
densidade de probabilidade (fdp) f(x), caso contnuo e p(x) no caso discreto. Todos os
mtodos pretendem tratar o problema de expressar x como uma funo explcita de R..

9
A literatura sobre o assunto reporta a existncia de pelo menos cinco mtodos bsicos
voltados para a gerao de amostras aleatrias:

1. Transformao Inversa;
2. Transformao Direta;
3. Convoluo;
4. Aceitao/Rejeio;
5. 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

A distribuio de Poisson se caracteriza pela seguinte funo densidade de probabilidade:

x
p ( x ) = P( X = x ) = e x = 0,1,2, ..., > 0
x!

a qual representa a probabilidade de ocorrncia de x sucessos, num dado intervalo de tempo.


Onde , o valor esperado do nmero de ocorrncias por unidade de tempo.

Os procedimentos computacionais para a gerao de uma varivel aleatria Poisson,


considerando a aplicao do mtodo da Aceitao/Rejeio, so os seguintes:

1. Fazer n = 0 e P =1;
2. Gerar um nmero aleatrio Rn+1 e substituir P por P.Rn+1;
3. Se, P < e , aceitar X = n, caso contrrio, rejeitar n atual, fazer n = n +1, e retornar
aos procedimentos no passo 2.

A idia bsica por traz do mtodo da Aceitao/Rejeio, gerar um nmero aleatrio e testar
uma determinada condio de aceitao. Caso esta condio seja satisfeita, o valor gerado
deve ser aceito. Caso contrrio, os passos devem ser repetidos. Verifica-se, claramente, a
necessidade de se gerar mais nmeros aleatrios do que o efetivamente utilizado, uma vez
que, nem sempre os valores das variveis aleatrias geradas, satisfaro condio necessria.
Abaixo um exemplo.

Exemplo 5

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

Passo Gerao de P, n e X
Gerao do 1 n = 0, P = 1
primeiro valor 2 R1 = 0,4357; P = 1.R1 = 0,4357
3 como P = 0,4357 < e-0,2 < 0,8187; aceita-se X = 0
1-3 R1 = 0,4146 leva a: X = 0
1 n = 0, P = 1
2 R1 = 0,8353; P = 1.R1 = 0,8353
3 como P e ; rejeita-se n = 0 e retorna-se ao
passo 2 com n = 1
Gerao do 2 R2 = 0,9952; P = P.R2 = 0,8353.0,9952 = 0,8313
segundo valor
3 como P e ; rejeita-se n = 1 e retorna-se ao
passo 2 com n = 2
2 R3 = 0,8004; P = P.R3 = 0,8313. 0,8004 = 0,6654
3 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 torna-
se computacionalmente mais adequada.

1.4.1.2 Distribuio Emprica Discreta

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 p(x) F(x)
0 0,50 0,50
1 0,30 0,80
2 0,20 1,00
Tabela 3: Valores da varivel aleatria x e de suas probabilidades

11
A funo densidade de probabilidade (fdp), p(x), da varivel dada por:

p(0) = P(X = 0) = 0,50


p(1) = P(X = 1) = 0,30
p(2) = P(X = 2) = 0,20

e a funo densidade de probabilidade acumulada, F(x) = P(X x), dada por

0 x<0
0,5 0 x <1

F (x ) =
0,8 1 x < 2
1,0 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)

0,73

0,5
X1 = 1

0 1 2 3 x
Grfico 1: Transformao de R1 = 0,73 em X = 1

Os procedimentos de busca so facilitados pela construo de uma tabela como a Tabela 4,


abaixo.

i Entrada ri Sada xi
1 0,50 0
2 0,80 1
3 1,00 2

12
Tabela 4: Tabela de gerao dos valores de X

Primeiramente, o objetivo descobrir o intervalo no qual e encontra R1. Em geral, fazendo R


= R1, se,

F ( x i 1 ) = ri 1 < R ri = F ( x i )

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

X = 1, 0,5 < R 0,8
2, 0,8 < R 1,0

1.4.2 Gerao de Distribuies Contnuas

Dentre as muitas distribuies tericas contnuas, possveis de serem artificialmente geradas,


apresentam-se, particularmente, os procedimentos afetos as distribuies uniforme, triangular,
exponencial e normal.

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:

1
f (x) = axb
b a

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

Os parmetros necessrios para a obteno de uma varivel com distribuio uniforme so


apenas os valores extremos do intervalo [a, b]. Uma vez definidos, os seguintes passos devem
ser considerados:

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 Valor de Ri e de xi
1 R1 = 0,932
2 x1 = 10 + (40)0,932 = 47,28
1 R2 = 0,105
2 x2 =10 + (40)0,105= 14,2
1 R3 = 0,687
2 x3 = 10 + (40)0,687= 37,48
Tabela 5: Valores para a varivel aleatria uniforme

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 ) , axb
f ( x ) = 2( c x )
, b<xc
( c b )( c a )

onde: a b c . A moda b = 3 E (x) - (a + c).

Pelo mtodo da transformao inversa facilmente se obtm a frmula para gerar amostras com
distribuio triangular. A varivel x com esta distribuio obtida por:

ba
a + R (b a )(c a ) , se 0 R
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:

1
2R 0 R
x= 2
1
2 2(1 R ) < R 1
2

Os trs valores obtidos so apresentados na Tabela 6:

Passo Valor de Ri e de xi
1 R1 = 0,544
2 x1 = 2- 2(1 0,544 ) = 1,045
1 R2 = 0,747

14
2 x2 =2- 2(1 0,747 ) = 1,288
1 R3 = 0,449
2 x3 = 2(0,449) = 0,947

Tabela 6: Valores para a varivel aleatria uniforme

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 1 2 3 4 5
Ri 0,1306 0,0422 0,6597 0,7965 0,7696
xi 0,1399 0,0431 1,0779 1,5920 1,4679
Tabela 7: Valores para a varivel aleatria exponencial

1.4.2.4 Distribuio Normal

Uma varivel aleatria x tem uma distribuio normal se sua fdp dada por:

( x)2
1
f ( x) = e 2 2
, < x <
2

Onde a mdia da distribuio e o desvio padro.

O mtodo utilizado para a obteno de uma varivel normal padronizada, isto , com = 0 e
= 1, conhecido como mtodo de Box-Muller. Embora existam outras tcnicas de obteno

15
de variveis normalmente distribudas, este mtodo facilmente programvel e apresenta
bons resultados. Considere duas variveis normais padronizadas, Z1 e Z2, as quais
correspondem s coordenadas de um ponto no plano (Grfico 2).

Grfico 2: Representao polar do par de variveis normais padronizadas

Este ponto pode ser representado em coordenadas polares:

Z1=B cos
Z2=B sen

Aps algumas transformaes matemticas, possvel demonstrar que o raio B pode ser
obtido por:
1
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
transformar os valores obtidos em variveis aleatrias normais com = 10 e = 2, calcula-
se:
x1 = 10 + 2.(1,11) = 12,22
x2 = 10 + 2.(1,50) = 13,00

1.5 Sumrio

Neste anexo descreveu-se, primeiramente, a gerao computacional de nmeros aleatrios.


Dentre os diversos mtodos existentes, tratou-se com mais detalhes do Mtodo Congruente
Linear (MCL). Complementando esta introduo ao tema, apresentou-se alguns mtodos de
gerao das principais variveis aleatrias, contnuas e discretas. Todos eles dependem da
gerao de nmeros aleatrios, os quais podem ser obtidos com os mtodos vistos na primeira
parte deste anexo.

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., Prendice-
Hall, 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

You might also like