Académique Documents
Professionnel Documents
Culture Documents
Este artigo aborda a gerao de nmeros aleatrios uniformemente distribudos no intervalo [0,11 utilizando o mtodo do resduo. A partir desta distribuio, possvel gerar outras distribuies por meio de transformaes. Entretanto, difcil obter uma distribuio perfeita devido s dificuldades computacionais. So apresentados exemplos de gerao de nmeros aleatrios com algumas distribuies conhecidas (gaussiana e exponencial) e mostrados os resultados obtidos. Palavras-chave: aleatrio, gauss, uniforme.
This paper approaches the generation of random numbers uniformly distributed in the interval [0,11 using the method of the residue. By this distribution, it is possible to generate other dietrlburlotts using transformations. However, it is difficult to get a perfect distribution due to computational difficulties. Examples of generation of random numbers with some known distributions are presented (gaussian and exponential) and its results are shown. Key words: random, gauss, uniform.
1.
INTRODUO
simulao em Qualquer computador de um sistema fsico que envolve aleatoriedade deve incluir um mtodo para gerao de seqncias de nmeros aleatrios. Por exemplo, a simulao de sistemas de filas envolve gerao de intervalo entre chegadas de clientes e tempo de atendimento de cada cliente. Esses nmeros aleatrios devem satisfazer as propriedades dos processos fsicos que eles esto simulando. Simulao em computador envolve a gerao de longas seqncias de nmeros aleatrios. A simulao computacional de
Sinergia, So Paulo, v. 3, n. 2, p. 154-161, jul./dez.
qualquer fenmeno aleatrio envolve a gerao de variveis aleatrias com distribuies pr-definidas. Uma vez que um modelo de distribuio de probabilidade tenha sido escolhido, um algoritmo para gerao da varivel aleatria deve ser utilizado.
2.
A partir de experimentos fsicos aleatrios, pode-se gerar nmeros aleatrios, associando o resultado de cada experimento a um nmero.
2002
--=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=-154
Gerao de Nmeros Aleatrios Alvaro R. Pereira ](mior / Maria Eugnia de A. Freitas / Wilian S. Lacerda
Entretanto, isto se torna invivel quando necessrio gerar uma grande quantidade de nmeros aleatrios. Alm disto, como no se pode garantir que o experimento ser realmente aleatrio [2], os nmeros gerados desta maneira tambm no sero totalmente aleatrios. Computacionalmente, existem mtodos de gerao de variveis aleatrias que so' baseados em nmeros aleatrios uniformemente distribudos entre zero e um [1]. Estes nmeros aleatrios com distribuio uniforme podem ser usados para gerar nmeros com probabilidades arbitrrias. Um problema que ocorre com a gerao de um nmero aleatrio no intervalo [0,1], que h infinitos nmeros neste intervalo, porm o computador limitado a representar nmeros com preciso finita. Outra dificuldade a necessidade de gerar longas seqncias de nmeros aleatrios, o que exige muito do processador e da memria (geralmente os mtodos utilizam recurso e operaes de diviso).
A Equao (1) desenvolve tomando o produto de a e Zk.J' dividindo por M, e fazendo Zk o resto da diviso. O nmero resultante est na faixa de a M-l, e se repete indefinidamente, ou seja, a seqncia peridica com perodo mximo M-l (pseudo-aleatrio). Para a seqncia ter o mximo comprimento possvel, a deve ser uma raiz primitiva de M [1]. Se o valor de M for extremamente grande, ento os nmeros na seqncia no se repetiro durante o curso da simulao. A escolha de Zo chamada a "semente" do gerador de nmeros aleatrios, e determina o ponto no qual a seqncia iniciada. A operao que mais consome tempo em um programa de gerao de nmeros aleatrios a diviso. Isto pode ser relevante quando desejado gerar grandes quantidades de nmeros, por causa do custo computacional. Nas sees seguintes so mostrados exemplos de gerao de nmeros aleatrios com distribuio uniforme e no uniforme.
A abordagem preferida para gerao computacional de nmeros aleatrios envolve o uso de frmulas recursivas que podem ser fcil e rapidamente implementadas. Ser apresentado o mtodo do resduo, o qual envolve a frmula recursiva dada na Equao (1):
Uma forma de implementao computacional em linguagem C do mtodo do resduo identificado pela Equao (1) mostrado na Figura 1.
(1) onde: a um inteiro escolhido entre 1 eM. M um nmero primo p ou uma potncia inteira de um nmero primo (pm).
1515 -==========---=:==================Sinergia,
unsigned long int n= 10000; unsigned long int Z, Za; unsigned long int M=2147483647; unsigned long int a=25717; unsigned long int i; double X[ n); Za= I; for{i=O;i<n;i++) { Z=(a*Za)\%M; Xji] = (double)Za/(M-I); Za=Z; }
/. /* /* /* /*
n = tamanho da seqncia */ annazenamento da seqncia */ maior valor M = 2"-1 */ parmetro alfa */ contador */ */
/* valor da semente
FIGURA
2002
s.
Aleatrios Lacerda
A Figura 2 mostra os nmeros aleatrios gerados, utilizando o programa da Figura 1. A Figura 3 mostra o histograma [3] dos nmeros aleatrios mostrados na Figura 2.
FIGURA
4:
NMEROS GERADOS PELO ALGO RITMO DO RESDUO COM ALTERAES (A = 1000, E M 131071)
FIGURA
2:
180
l~'r---'----'---'----'---'----'---'----'---'---~
160 120 ~ 120 100
-l1
~100
080
60
20
20
0.1
02
0.3
0.7
0.8
0.9
o o
0.1
0.2
0.3
0.7
0.8
0.9
FIGURA
5:
FIGURA
3:
HISTOGRAMA DOS NMEROS GERADOS PELO ALGORITMO DO RESDUO COM ALTERAES (A 1000, E M = 131071)
A Figura 4 mostra os nmeros aleatrios gerados, utilizando o programa da Figura 1, fazendo a 1000 e M = 131071. A periodicidade dos nmeros gerados pode ser observada devido m escolha dos parmetros. A Figura 5 mostra o
A Figura 6 mostra o resultado da gerao de nmeros aleatrios utilizando a funo rand da biblioteca padro da linguagem C. A Figura 7 mostra o histograma correspondente ao resultado da gerao de nmeros aleatrios da Figura 6.
Sinergia,
2002
--==================::::=-156
Gerao de Nmeros Aleatrios ;~/varo R. Pereira Jnior / Maria Eugnia de A. Freitas / Wilian S. Lacerda
FIGURA 6:
FIGURA 8:
100
0.1 0.1 02 0.3 0.4 0.5 0.6 Nmeros aJeal6r1os 0.7 0.6 0.9
02
0.3
0.7
0.6
0.9
FIGURA 9: FIGURA 7: HISTOGRAMA DOS NMEROS GERADOS PELA FUNO RAND DA BIBLIOTECA DA LINGUAGEM C
2.3 Teste de validao: A Figura 8 mostra o resultado da gerao de nmeros aleatrios utilizando a funo rand da biblioteca padro do Matlab [4]. A Figura 9 mostra o correspondente histograma do resultado da gerao de nmeros aleatrios da Figura 8.
"chi-square"
"chi-square" largamente utilizado para determinar a aproximao de uma distribuio para um conjunto de dados experimentais [1] . O teste "chi-square" definido como a diferena ponderada entre o nmero observado de resultados (Nk), dentro do intervalo k, e o valor esperado (mk), conforme mostrado na Equao (2), onde K o nmero total
o teste
157 --=================:=-Sinergia,
2002
I 1)
de intervalos:
(2)
elo
2) Fazer Z = FX"l(U), onde Fx a funo de distribuio que se deseja gerar.
Se a aproximao boa, ento IY ser o menor possvel. Dessa forma, a hiptese rejeitada se D2 ;::: tu, onde tu, um limiar determinado pelo nvel significante de teste. Os resultados do teste "chi-square" para os nmeros aleatrios apresentados nas Figuras 2, 4, 6, e 8, so mostrados na Tabela 1, sabendose que a distribuio esperada seria a uniforme.
Este mtodo vlido apenas quando a funo de transformao for monotnica, ou seja, crescente ou decrescente durante todo o intervalo de transformao [6]. A seguir sero dado exemplos de gerao de nmeros aleatrios no uniformes: a distribuio exponencial e a gaussiana.
2.4.1
Mtodo
Ling.C
Figura
02
6 8 2
4
82 90 103 683
Para gerar nmeros aleatrios com distribuio exponencial, a partir de nmeros aleatrios de distribuio uniforme (U), utiliza-se a Equao (4) [1] obtida atravs da inversa da funo de distribuio exponencial dada pela Equao (3): FX(x)=l-e -lu .x > O
(3)
Percebe-se que a melhor distribuio a gerada pela funo rand da biblioteca da linguagem C.
x = _ fn(U)
.
(4)
2.4 Gerao de outras distribuies Invariavelmente, necessano gerar nmeros aleatrios com distribuio definida diferente da uniforme. Existem alguns mtodos para isso. Um mtodo para gerao de nmeros aleatrios de distribuio diferente da uniforme envolve a execuo dos seguintes passos:
onde . > O a taxa de variao da exponencial. A Figura 10 mostra os nmeros gerados pela transformao dos nmeros aleatrios com distribuio uniforme, obtidos pela funo rand do Matlab. Na Figura 11 apresentado o histograma correspondente aos nmeros da Figura 10.
Gerao
de
Nmeros
Aleatrios
FX(x)
1
~21t(J 2
. e-(~-X)212.(J2
-00
d~ (5)
. '.'-
substitudo
por
~ na
3000
4000
5000
6000
1000
8000
0000
, 0000
NUmeros aleatrios
FIGURA
10:
Considerando duas variveis aleatrias gaussianas X e Y independentes com mdia zero e varincia 1, e a seguinte transformao nas variveis aleatrias R2 e 0 mostradas nas Equaes (6) e (7): (6)
x o =arctgy
(7)
"l-
Considerando ainda as respectivas inversas das Equaes (6) e (7) apresentadas nas Equaes (8)
i6400
300 2110 100
e (9):
X
=
R .cos(0)
(8) (9)
Y = R .sen(0)
o
2 3
-1
Nlmeros aleatrios
FIGURA
11:
HISTOGRAMA DOS NMEROS GERADOS PELA TRANSFORMAO DA V.A. UNIFORME EM V.A. EXPONENCIAL
Obtm-se as Equaes 10 e 11, calculando a funo densidade conjunta de R2 e 8, e suas funes de densidade marginais [6]:
( 11) Mas 0 pode ser gerado pela transformao de uma varivel aleatria uniforme (U) no intervalo [0,1], conforme Equao (12):
A varivel aleatria gaussiana possui uma distribuio (Equao 5) cuja inversa no pode ser encontrada analiticamente. Mas a varivel aleatria gaussiana pode ser gerada usando uma extenso do mtodo de transformao:
0=21tU
(12)
jul./dez.
2002
E R2 pode ser gerado pela transformao de uma varivel aleatria uniforme (U2) no intervalo [0,1], conforme Equao (13): (13) Ento, para gerar nmeros aleatrios independentes (X e Y) com distribuio gaussiana com mdia zero e varincia 1, a prtir de nmeros aleatrios de distribuio uniforme (U! e U2 independentes) no intervalo [0,1], utilizam-se as Equaes 14 e 15 [1]:
:ll
x
250
~200
~
'00
8'50
50
o -4
-3
-1
o
aleatrios
Nmeros
FIGURA
13:
HISTOGRAMA DOS NMEROS GERADOS PELA TRANSFORMAO DA V.A.. UNIFORME EM V.A. GAUSSIANA
x = ~-
2.1n(U1 ).cos(2.1t.U 2)
(14)
( 15)
3.
CONCLUSES
Na Figura 12 apresentado o resultado da gerao de nmeros aleatrios com distribuio normal a partir da transformao da varivel aleatria uniforme gerada pela funo rand do Matlab. Na Figura 13 apresentado o correspondente histograma dos nmeros aleatrios mostrados na Figura 12.
..-:
.,
-'.
".
Na gerao de nmeros aleatrios uniformemente distribudos pelo mtodo do resduo, deve-se escolher cuidadosamente a "semente" (Zo)' os parmetros a e M. Ou seja, a varivel aleatria depende apenas das condies iniciais. Uma vez gerado uma sequencia aleatria uniforme, pode-se gerar computacionalmente outra distribuio, com certa preciso, utilizando o mtodo da transformao, como foi exemplificado na gerao de nmeros aleatrios com distribuio exponencial e gaussiana. Entretanto, difcil gerar com bastante preciso nmeros aleatrios com uma determinada distribuio, como pode ser comprovado pelos grficos mostrados
. .'.....
-3 . "
. ....
AGRADECIMENTOS Os autores agradecem aos docentes Dr. Paulo F. Seixas, Dr. Hani C. Yehia, e Dra. Rosngela H. Loschi da UFMG pelas contribuies e incentivo ao desenvolvimento do artigo.
-4
-50
1000
2000
3000
4000
5IlOO
6000
7000
8000
oo
100
FIGURA
12:
2002
Gerao de Nmeros Aleatrios Alvaro R. Pereira Jnior / Maria Eugnia de A. Freitas / Wilian S. Lacerda
REFERNCIAS BI BLIOG RFICAS 1. GARCIA, Alberto Leon. Probability and Random processes for Electrical Engineering. New York: __ Addison-Wesley Publishing Company, 1989.
583 p.
2. JAYNES,Edwin T. PrbabilityTheory: The Logic of Science. St. Louis: Washington University, fragmentary edition of March 1996. Disponvel em http:// omega .albany.edu: 8008/ JaynesBook.html, acesso em agosto de 2002. 3" MAGALHES, Marcos Nascimento, LIMA, Antnio Carlos Pedroso. Noes de Probabilidade e a Estatstica. 4 ed. So Paulo: Editora da Universidade de So Paulo, 2002. 416 p.
1993. 401 p.
Para contato com os autores: alvaro@cpdee.ufmg.br eugenia@cpdee.ufmg.br lacerda@ufla.br
161. --=========================::::::=-Sinergia,