of · NUmeros aleatórios. FIGURA. 10: NÚMEROS GERADOS PELA TRANSFORMAÇÃO DA V.A. UNIFORME EM...

8
GERAÇÃO DE NÚMEROS ALEATÓRIOS Álvaro Rodrigues Pereira Júnior Pós-graduando do Centro de Pesquisa e Desenvolvimento em Eng. Elétrica/UFMG Maria Eugênia de Almeida Freitas Professora Assistente do Centro Federal de Educação Tecnológica de Minas Gerais Wilian Soares Lacerda Professor Adjunto da Universidade Federal de Lavras Este artigo aborda a geração de números aleatórios uniformemente distribuídos no intervalo [0,11 utilizando o método do resíduo. A partir desta distribuição, é possível gerar outras distribuições por meio de transformações. Entretanto, é difícil obter uma distribuição perfeita devido às dificuldades computacionais. São apresentados exemplos de geração de números aleatórios com algumas distribuições conhecidas (gaussiana e exponencial) e mostrados os resultados obtidos. Palavras-chave: aleatório, 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. INTRODUÇÃO Qualquer simulação em computador de um sistema físico que envolve aleatoriedade deve incluir um método para geração de seqüências de números aleatórios. Por exemplo, a simulação de sistemas de filas envolve geração de intervalo entre chegadas de clientes e tempo de atendimento de cada cliente. Esses números aleatórios devem satisfazer as propriedades dos processos físicos que eles estão simulando. Simulação em computador envolve a geração de longas seqüências de números aleatórios. A simulação computacional de qualquer fenômeno aleatório envolve a geração de variáveis aleatórias com distribuições pré-definidas. Uma vez que um modelo de distribuição de probabilidade tenha sido escolhido, um algoritmo para geração da variável aleatória deve ser utilizado. 2. MÉTODO PARA GERAÇÃO COMPUTACIONAL DE NÚMEROS ALEATÓRIOS A partir de experimentos físicos aleatórios, pode-se gerar números aleatórios, associando o resultado de cada experimento a um número. Sinergia, São Paulo, v. 3, n. 2, p. 154-161, jul./dez. 2002 --=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=-154

Transcript of of · NUmeros aleatórios. FIGURA. 10: NÚMEROS GERADOS PELA TRANSFORMAÇÃO DA V.A. UNIFORME EM...

Page 1: of · NUmeros aleatórios. FIGURA. 10: NÚMEROS GERADOS PELA TRANSFORMAÇÃO DA V.A. UNIFORME EM V.A. EXPONENCIAL. 1000 9110 8011 JIIII "l-i-6. 400 300 2110 100. o-1. o. 2 3. Nlmeros

GERAÇÃO DE NÚMEROS ALEATÓRIOS

Álvaro Rodrigues Pereira JúniorPós-graduando do Centro de Pesquisa e Desenvolvimento em Eng. Elétrica/UFMG

Maria Eugênia de Almeida FreitasProfessora Assistente do Centro Federal de Educação Tecnológica de Minas Gerais

Wilian Soares LacerdaProfessor Adjunto da Universidade Federal de Lavras

Este artigo aborda a geração de números aleatórios uniformementedistribuídos no intervalo [0,11 utilizando o método do resíduo. A partir destadistribuição, é possível gerar outras distribuições por meio detransformações. Entretanto, é difícil obter uma distribuição perfeita devidoàs dificuldades computacionais. São apresentados exemplos de geraçãode números aleatórios com algumas distribuições conhecidas (gaussiana eexponencial) e mostrados os resultados obtidos.

Palavras-chave: aleatório, gauss, uniforme.

This paper approaches the generation of random numbers uniformlydistributed in the interval [0,11 using the method of the residue. By thisdistribution, it is possible to generate other dietrlburlotts usingtransformations. However, it is difficult to get a perfect distribution due tocomputational difficulties. Examples of generation of random numbers withsome known distributions are presented (gaussian and exponential) andits results are shown.

Key words: random, gauss, uniform.

1. INTRODUÇÃO

Qualquer simulação emcomputador de um sistema físico queenvolve aleatoriedade deve incluir ummétodo para geração de seqüências denúmeros aleatórios. Por exemplo, asimulação de sistemas de filas envolvegeração de intervalo entre chegadas declientes e tempo de atendimento decada cliente. Esses números aleatóriosdevem satisfazer as propriedades dosprocessos físicos que eles estãosimulando. Simulação em computadorenvolve a geração de longasseqüências de números aleatórios.

A simulação computacional de

qualquer fenômeno aleatório envolvea geração de variáveis aleatórias comdistribuições pré-definidas. Uma vezque um modelo de distribuição deprobabilidade tenha sido escolhido, umalgoritmo para geração da variávelaleatória deve ser utilizado.

2. MÉTODO PARA GERAÇÃOCOMPUTACIONAL DENÚMEROS ALEATÓRIOS

A partir de experimentos físicosaleatórios, pode-se gerar númerosaleatórios, associando o resultado decada experimento a um número.

Sinergia, São Paulo, v. 3, n. 2, p. 154-161, jul./dez. 2002 --=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=-154

UFOP
Nota
http://www2.ifsp.edu.br/edu/prp/sinergia/complemento/sinergia_2002_n2/pdf_s/segmentos/artigo_12_v3_n2.pdf
Page 2: of · NUmeros aleatórios. FIGURA. 10: NÚMEROS GERADOS PELA TRANSFORMAÇÃO DA V.A. UNIFORME EM V.A. EXPONENCIAL. 1000 9110 8011 JIIII "l-i-6. 400 300 2110 100. o-1. o. 2 3. Nlmeros

Geração de Números AleatóriosAlvaro R. Pereira ](mior / Maria Eugênia de A. Freitas / Wilian S. Lacerda

Entretanto, isto se torna inviávelquando é necessário gerar uma grandequantidade de números aleatórios.Além disto, como não se pode garantirque o experimento será realmentealeatório [2], os números geradosdesta maneira também não serãototalmente aleatórios.

Computacionalmente, existemmétodos de geração de variáveisaleatórias que são' baseados emnúmeros aleatórios uniformementedistribuídos entre zero e um [1]. Estesnúmeros aleatórios com distribuiçãouniforme podem ser usados para gerarnúmeros com probabilidadesarbitrárias.

Um problema que ocorre com ageração de um número aleatório nointervalo [0,1], é que há infinitosnúmeros neste intervalo, porém ocomputador é limitado a representarnúmeros com precisão finita. Outradificuldade é a necessidade de gerarlongas seqüências de númerosaleatórios, o que exige muito doprocessador e da memória(geralmente os métodos utilizamrecursão e operações de divisão).

2.1 Método do resíduo

A abordagem preferida parageração computacional de númerosaleatórios envolve o uso de fórmulasrecursivas que podem ser fácil erapidamente implementadas. Seráapresentado o método do resíduo, oqual envolve a fórmula recursiva dadana Equação (1):

(1)

onde:

a é um inteiro escolhido entre 1eM.M é um número primo p ou umapotência inteira de um númeroprimo (pm).

A Equação (1) desenvolvetomando o produto de a e Zk.J'dividindo por M, e fazendo Zk o restoda divisão. O número resultante estána faixa de ° a M-l, e se repeteindefinidamente, ou seja, a seqüênciaé periódica com período máximo M-l(pseudo-aleatório). Para a seqüênciater o máximo comprimento possível,a deve ser uma raiz primitiva de M [1].

Se o valor de M for extremamentegrande, então os números naseqüência não se repetirão durante ocurso da simulação. A escolha de Zo échamada a "semente" do gerador denúmeros aleatórios, e determina oponto no qual a seqüência é iniciada.

A operação que mais consometempo em um programa de geraçãode números aleatórios é a divisão. Istopode ser relevante quando é desejadogerar grandes quantidades denúmeros, por causa do custocomputacional.

Nas seções seguintes sãomostrados exemplos de geração denúmeros aleatórios com distribuiçãouniforme e não uniforme.

2.2 Exemplos de geração denúmeros aleatórios

Uma forma de implementaçãocomputacional em linguagem C dométodo do resíduo identificado pelaEquação (1) é mostrado na Figura 1.

/. n = tamanho da seqüência *//* annazenamento da seqüência *//* maior valor M = 2"-1 *//* parâmetro alfa *//* contador */

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;}

/* valor da semente */

/* calcula resto da divisão *//* normaliza e armazena */

FIGURA 1: ALGORITMO EM LINGUAGEM C DOMÉTODO DO RESÍDUO

1515-==========---=:==================Sinergia, São Paulo, v. 3, n. 2, p. 154-161, jul./dez. 2002

Page 3: of · NUmeros aleatórios. FIGURA. 10: NÚMEROS GERADOS PELA TRANSFORMAÇÃO DA V.A. UNIFORME EM V.A. EXPONENCIAL. 1000 9110 8011 JIIII "l-i-6. 400 300 2110 100. o-1. o. 2 3. Nlmeros

Geração de Números AleatóriosAlvaro R. Pereira Júnior I Maria Eugenia de A. Freitas I wilian s. Lacerda

A Figura 2 mostra os númerosaleatórios gerados, utilizando oprograma da Figura 1. A Figura 3mostra o histograma [3] dos númerosaleatórios mostrados na Figura 2.

FIGURA 2: NÚMEROS GERADOS PELOALGORITMO DO RESÍDUO

l~'r---'----'---'----'---'----'---'----'---'---~

120

100

20

oo 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9Números a1eal6rlos

FIGURA 3: HISTOGRAMA DOS NÚMEROSGERADOS PELO ALGORITMO DORESÍDUO

A Figura 4 mostra os númerosaleatórios gerados, utilizando oprograma da Figura 1, fazendo a1000 e M = 131071. A periodicidadedos números gerados pode serobservada devido à má escolha dosparâmetros. A Figura 5 mostra o

histograma referente aos númerosaleatórios mostrados na Figura 4.

FIGURA 4: NÚMEROS GERADOS PELOALGO RITMO DO RESÍDUO COMALTERAÇÕES (A = 1000, E M131071)

180

160

~ 120-l1~100

080

60

20

oo 0.1 02 0.3 0.4 0.5 0.6 0.7 0.8 0.9

Números aleatórios

FIGURA 5: HISTOGRAMA DOS NÚMEROSGERADOS PELO ALGORITMO DORESÍDUO COM ALTERAÇÕES (A1000, E M = 131071)

A Figura 6 mostra o resultado dageração de números aleatóriosutilizando a função rand da bibliotecapadrão da linguagem C. A Figura 7mostra o histograma correspondenteao resultado da geração de númerosaleatórios da Figura 6.

Sinergia, São Paulo, v. 3, n. 2, p. 154-161, jul./dez. 2002 --==================::::=-156

Page 4: of · NUmeros aleatórios. FIGURA. 10: NÚMEROS GERADOS PELA TRANSFORMAÇÃO DA V.A. UNIFORME EM V.A. EXPONENCIAL. 1000 9110 8011 JIIII "l-i-6. 400 300 2110 100. o-1. o. 2 3. Nlmeros

Geração de Números Aleatórios;~/varo R. Pereira Júnior / Maria Eugênia de A. Freitas / Wilian S. Lacerda

FIGURA 6: NÚMEROS GERADOS PELA FUNÇÃORAND DA BIBLIOTECA DALINGUAGEM C

0.1 02 0.3 0.4 0.5 0.6 0.7 0.6 0.9Números aJeal6r1os

FIGURA 7: HISTOGRAMA DOS NÚMEROSGERADOS PELA FUNÇÃO RAND DABIBLIOTECA DA LINGUAGEM C

A Figura 8 mostra o resultado dageração de números aleatóriosutilizando a função rand da bibliotecapadrão do Matlab [4]. A Figura 9mostra o correspondente histogramado resultado da geração de númerosaleatórios da Figura 8.

FIGURA 8: NÚMEROS GERADOS PELA FUNÇÃORAND DO MATLAB

100

0.1 02 0.3 0.4 0.5 0.6 0.7 0.6 0.9Números a1ealórios

FIGURA 9: HISTOGRAMA DOS NÚMEROSGERADOS PELA FUNÇÃO RAND DOMATLAB

2.3 Teste de validação:"chi-square"

o teste "chi-square" é largamenteutilizado para determinar aaproximação de uma distribuição paraum conjunto de dados experimentais[1] .

O teste "chi-square" é definidocomo a diferença ponderada entre onúmero observado de resultados (Nk),

dentro do intervalo k, e o valoresperado (mk), conforme mostrado naEquação (2), onde K é o número total

157 --=================:=-Sinergia, São Paulo, v. 3, n. 2, p. 154-161, jul./dez. 2002

Page 5: of · NUmeros aleatórios. FIGURA. 10: NÚMEROS GERADOS PELA TRANSFORMAÇÃO DA V.A. UNIFORME EM V.A. EXPONENCIAL. 1000 9110 8011 JIIII "l-i-6. 400 300 2110 100. o-1. o. 2 3. Nlmeros

Geração de Números Aleatórios

de intervalos: (2)

A/varo R. Pereira Junior I Maria Eugênia de A. Freitas I wilian s. Lacerda

Se a aproximação é boa, entãoIY será o menor possível. Dessa forma,a hipótese é rejeitada se D2 ;::: tu, ondetu, é um limiar determinado pelo nívelsignificante de teste.Os resultados do teste "chi-square"para os números aleatóriosapresentados nas Figuras 2, 4, 6, e 8,são mostrados na Tabela 1, sabendo-se que a distribuição esperada seria auniforme.

Método Figura 02

Ling.C 6 82Matlab 8 90

Resíduo 2 103Resíduo (alterado) 4 683

TABELA 1: RESULTADOS DO TESTE"CHI-SQUARE"

Percebe-se que a melhordistribuição é a gerada pela função randda biblioteca da linguagem C.

2.4 Geração de outrasdistribuições

Invariavelmente, é necessanogerar números aleatórios comdistribuição definida diferente dauniforme. Existem alguns métodospara isso.

Um método para geração denúmeros aleatórios de distribuiçãodiferente da uniforme envolve aexecução dos seguintes passos:

1) Gerar variável aleatória Uuniformemente distribuída entre Oelo

2) Fazer Z = FX"l(U), onde Fx é afunção de distribuição que sedeseja gerar.

Este método é válido apenasquando a função de transformação formonotônica, ou seja, crescente oudecrescente durante todo o intervalode transformação [6].

A seguir serão dado exemplosde geração de números aleatórios nãouniformes: a distribuição exponenciale a gaussiana.

2.4.1 Geração de númerosaleatórios com distribuiçãoexponencial

Para gerar números aleatórioscom distribuição exponencial, a partirde números aleatórios de distribuiçãouniforme (U), utiliza-se a Equação (4)[1] obtida através da inversa da funçãode distribuição exponencial dada pelaEquação (3):

-luFX(x)=l-e .x > O (3)

x = _ fn(U)À. (4)

onde À. > O é a taxa de variação daexponencial.

A Figura 10 mostra os númerosgerados pela transformação dosnúmeros aleatórios com distribuiçãouniforme, obtidos pela função rand doMatlab. Na Figura 11 é apresentado ohistograma correspondente aosnúmeros da Figura 10.

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

Page 6: of · NUmeros aleatórios. FIGURA. 10: NÚMEROS GERADOS PELA TRANSFORMAÇÃO DA V.A. UNIFORME EM V.A. EXPONENCIAL. 1000 9110 8011 JIIII "l-i-6. 400 300 2110 100. o-1. o. 2 3. Nlmeros

Geração de Números Aleatórios

. '.'-

3000 4000 5000 6000 1000 8000 0000 , 0000NUmeros aleatórios

FIGURA 10: NÚMEROS GERADOS PELATRANSFORMAÇÃO DA V.A.UNIFORME EM V.A.

EXPONENCIAL

1000

9110

8011

JIIII

"l-i-6400

300

2110

100

o-1 o 2 3

Nlmeros aleatórios

FIGURA 11: HISTOGRAMA DOS NÚMEROSGERADOS PELATRANSFORMAÇÃO DA V.A.UNIFORME EM V.A.EXPONENCIAL

2.4.2 Geração de númerosaleatórios com distribuiçãogaussiana

A variável aleatória gaussianapossui uma distribuição (Equação 5)cuja inversa não pode ser encontradaanaliticamente. Mas a variável aleatóriagaussiana pode ser gerada usando umaextensão do método detransformação:

FX(x) = 1 . Íe-(~-X)212.(J2 d~~21t(J 2 -00

(5)

onde x foi substituído por ~ naintegração.

Considerando duas variáveisaleatórias gaussianas X e Yindependentes com média zero evariância 1, e a seguinte transformaçãonas variáveis aleatórias R2 e 0mostradas nas Equações (6) e (7):

(6)

xo =arctg-y (7)

Considerando ainda asrespectivas inversas das Equações (6)e (7) apresentadas nas Equações (8)e (9):

X = R .cos(0) (8)

Y = R .sen(0) (9)

Obtêm-se as Equações 10 e 11,calculando a função densidade conjuntade R2 e 8, e suas funções de densidademarginais [6]:

(10)

( 11)

Mas 0 pode ser gerado pelatransformação de uma variávelaleatória uniforme (U) no intervalo[0,1], conforme Equação (12):

0=21tU•• 1 (12)

l!i9-=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::~Sinergia,São Paulo, v. 3, n. 2, p. 154-161, jul./dez. 2002

Page 7: of · NUmeros aleatórios. FIGURA. 10: NÚMEROS GERADOS PELA TRANSFORMAÇÃO DA V.A. UNIFORME EM V.A. EXPONENCIAL. 1000 9110 8011 JIIII "l-i-6. 400 300 2110 100. o-1. o. 2 3. Nlmeros

Geração de Números AleatóriosA/varo R. Pereira Junior I Maria Eugenia de A. Freitas I Wilian 5. Lacerda

E R2 pode ser gerado pelatransformação de uma variávelaleatória uniforme (U2) no intervalo[0,1], conforme Equação (13):

(13)

Então, para gerar númerosaleatórios independentes (X e Y) comdistribuição gaussiana com média zeroe variância 1, a pãrtir de númerosaleatórios de distribuição uniforme (U!e U2 independentes) no intervalo [0,1],utilizam-se as Equações 14 e 15 [1]:

x = ~- 2.1n(U1 ).cos(2.1t.U 2) (14)

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

Na Figura 12 é apresentado oresultado da geração de númerosaleatórios com distribuição normal apartir da transformação da variávelaleatória uniforme gerada pela funçãorand do Matlab. Na Figura 13 éapresentado o correspondentehistograma dos números aleatóriosmostrados na Figura 12.

3 .

-'. "...-: : ,2 .,

. .'...... ....

-3 . "

-4

-50 1000 2000 3000 4000 5IlOO 6000 7000 8000 ooסס 00סס1

FIGURA 12: NÚMEROS GERADOS PELATRANSFORMAÇÃO DA V.A.UNIFORME EM V.A. GAUSSIANA

Sinergia, São Paulo, v. 3, n. 2, p. 154-161, jul./dez. 2002

=-

350

250

~200

:ll~8'50

'00

50

o-3-4 -1 o 1

Números aleatórios2 3 4

FIGURA 13: HISTOGRAMA DOS NÚMEROSGERADOS PELATRANSFORMAÇÃO DA V.A..UNIFORME EM V.A. GAUSSIANA

3. CONCLUSÕES

Na geração de números aleatóriosuniformemente distribuídos pelométodo do resíduo, deve-se escolhercuidadosamente a "semente" (Zo)' osparâmetros a e M. Ou seja, a variávelaleatória depende apenas dascondições iniciais.

Uma vez gerado uma sequenciaaleatória uniforme, pode-se gerarcomputacionalmente outra distribuição,com certa precisão, utilizando ométodo da transformação, como foiexemplificado na geração de númerosaleatórios com distribuição exponenciale gaussiana.

Entretanto, é difícil gerar combastante precisão números aleatórioscom uma determinada distribuição,como pode ser comprovado pelosgráficos mostrados •

AGRADECIMENTOS

Os autores agradecem aosdocentes Dr. Paulo F. Seixas, Dr. HaniC. Yehia, e Dra. Rosângela H. Loschi daUFMG pelas contribuições e incentivoao desenvolvimento do artigo.

Page 8: of · NUmeros aleatórios. FIGURA. 10: NÚMEROS GERADOS PELA TRANSFORMAÇÃO DA V.A. UNIFORME EM V.A. EXPONENCIAL. 1000 9110 8011 JIIII "l-i-6. 400 300 2110 100. o-1. o. 2 3. Nlmeros

Geração de Números AleatóriosAlvaro R. Pereira Júnior / Maria Eugênia de A. Freitas / Wilian S. Lacerda

REFERÊNCIASBI BLIOG RÁFICAS

1. GARCIA, Alberto Leon. Probabilityand Random processes forElectrical Engineering. NewYork: __ Addison-WesleyPublishing Company, 1989.583 p.

2. JAYNES,Edwin T. PróbabilityTheory:The Logic of Science. St.Louis: Washington University,fragmentary edition of March1996. Disponível em http://omega .albany.edu: 8008/JaynesBook.html, acesso emagosto de 2002.

3" MAGALHÃES, Marcos Nascimento,LIMA, Antônio Carlos Pedroso.Noções de Probabilidade eEstatística. 4a ed. São Paulo:Editora da Universidade de SãoPaulo, 2002. 416 p.

4. MATLABUser's Guide. Disponível emhttp r//www.mathworks.corn,acesso em agosto de 2002.

5. PAPOULIS, Athanasios. Probability,Random Variables, andStochastic Processes. 3rd ed.New Yórk: McGraw-HillInternational, 1991. 666 p.

6. PEEBLES, Peyton Z. Probability,Random Variables, andRandom Signal PrincipIes. 3rd

ed. New York: McGraw-Hill,1993. 401 p.

Para contato com os autores:

[email protected]

[email protected]

[email protected]

161.--=========================::::::=-Sinergia, São Paulo, v. 3, n. 2, p. 154-161, jul./dez. 2002