Vous êtes sur la page 1sur 8

GERAO DE NMEROS ALEATRIOS

lvaro Rodrigues Pereira Jnior


Ps-graduando do Centro de Pesquisa e Desenvolvimento em Eng. Eltrica/UFMG

Maria Eugnia de Almeida Freitas


Professora Assistente do Centro Federal de Educao Tecnolgica de Minas Gerais

Wilian Soares Lacerda


Professor Adjunto da Universidade Federal de Lavras

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.

MTODO PARA GERAO COMPUTACIONAL DE NMEROS ALEATRIOS

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.

2.2 2.1 Mtodo do resduo

Exemplos de gerao de nmeros aleatrios

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

/* calcula resto da diviso */ /* normaliza e armazena */

FIGURA

1: ALGORITMO EM LINGUAGEM C DO MTODO DO RESDUO

So Paulo, v. 3, n. 2, p. 154-161, jul./dez.

2002

Alvaro R. Pereira Jnior

Gerao de Nmeros Maria Eugenia de A. Freitas I wilian

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.

histograma referente aos nmeros aleatrios mostrados na Figura 4.

FIGURA

4:

NMEROS GERADOS PELO ALGO RITMO DO RESDUO COM ALTERAES (A = 1000, E M 131071)

FIGURA

2:

NMEROS GERADOS PELO ALGORITMO DO RESDUO

180

l~'r---'----'---'----'---'----'---'----'---'---~
160 120 ~ 120 100

-l1
~100

080
60

20

20

0.1

02

0.3

0.4 0.5 0.6 Nmeros aleatrios

0.7

0.8

0.9

o o

0.1

0.2

0.3

0.4 0.5 0.6 Nmeros a1eal6rlos

0.7

0.8

0.9

FIGURA

5:

FIGURA

3:

HISTOGRAMA DOS NMEROS GERADOS PELO ALGORITMO DO RESDUO

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,

So Paulo, v. 3, n. 2, p. 154-161, jul./dez.

2002

--==================::::=-156

Gerao de Nmeros Aleatrios ;~/varo R. Pereira Jnior / Maria Eugnia de A. Freitas / Wilian S. Lacerda

FIGURA 6:

NMEROS GERADOS PELA FUNO RAND DA BIBLIOTECA DA LINGUAGEM C

FIGURA 8:

NMEROS GERADOS PELA FUNO RAND DO MATLAB

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.4 0.5 0.6 Nmeros a1ealrios

0.7

0.6

0.9

FIGURA 9: FIGURA 7: HISTOGRAMA DOS NMEROS GERADOS PELA FUNO RAND DA BIBLIOTECA DA LINGUAGEM C

HISTOGRAMA DOS NMEROS GERADOS PELA FUNO RAND DO MATLAB

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,

So Paulo, v. 3, n. 2, p. 154-161, jul./dez.

2002

A/varo R. Pereira Junior

I 1)

Gerao de Nmeros Aleatrios Maria Eugnia de A. Freitas I wilian s. Lacerda

de intervalos:

(2)

Gerar varivel aleatria U uniformemente distribuda entre O

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

Gerao de nmeros aleatrios com distribuio exponencial

Mtodo
Ling.C

Figura

02

6 8 2
4

82 90 103 683

Matlab Resduo Resduo (alterado)


TABELA 1:

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)

RESULTADOS DO TESTE "CHI-SQUARE"

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.

Sinergia, So Paulo, v. 3, n. 2, p. 154-161, jul.jdez. 2002 -===::::::::=::::::::=::::::::=::::::::=::::::::=::::::::=::::::::=::::::::=::::::::=::::::::=::::::::=::::::::=====-158

Gerao

de

Nmeros

Aleatrios

FX(x)

1
~21t(J 2

. e-(~-X)212.(J2
-00

d~ (5)

. '.'-

onde x foi integrao.

substitudo

por

~ na

3000

4000

5000

6000

1000

8000

0000

, 0000

NUmeros aleatrios

FIGURA

10:

NMEROS GERADOS PELA TRANSFORMAO DA V.A. UNIFORME EM V.A. EXPONENCIAL

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)

1000 9110 8011 JIIII

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]:

(10) 2.4.2 Gerao de nmeros aleatrios com distribuio gaussiana

( 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)

l!i9-=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::~Sinergia, So Paulo, v. 3, n. 2, p. 154-161,

jul./dez.

2002

A/varo R. Pereira Junior

Gerao de Nmeros Aleatrios Maria Eugenia de A. Freitas I Wilian 5. Lacerda


350

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)

y = ~ - 2.ln(U 1)' sen(2.1t .U 2 )

( 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:

NMEROS GERADOS PELA TRANSFORMAO DA V.A. UNIFORME EM V.A. GAUSSIANA

Sinergia, So Paulo, v. 3, n. 2, p. 154-161, jul./dez.

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.

4. MATLABUser's Guide. Disponvel em http r//www.mathworks.corn, acesso em agosto de 2002.

5. PAPOULIS, Athanasios. Probability,


Random Variables, and Stochastic Processes. 3rd ed. New Yrk: McGraw-Hill International, 1991. 666 p.

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.

6. PEEBLES, Peyton Z. Probability,


Random Variables, and Random Signal PrincipIes. 3rd ed. New York: McGraw-Hill,

1993. 401 p.
Para contato com os autores: alvaro@cpdee.ufmg.br eugenia@cpdee.ufmg.br lacerda@ufla.br

161. --=========================::::::=-Sinergia,

So Paulo, v. 3, n. 2, p. 154-161, jul./dez. 2002

Vous aimerez peut-être aussi