SlideShare una empresa de Scribd logo
1 de 4
Descargar para leer sin conexión
Simulação: geração de números pseudo-aleatórios
         A ideia de gerar sequências aleatórias através dum algoritmo numérico pode
parecer inteiramente inadequada [Ecker & Kupferschmid, 1988]. Os algoritmos do
género que se podem implementar num programa de computador são, por definição,
completamente determinísticos e nunca podem, portanto, produzir um efeito aleatório
de qualquer tipo. Se um computador estiver a funcionar normalmente, oferece
precisamente o mesmo resultado de cada vez que executa uma operação sobre os
mesmos dados. Qualquer sequência de números gerados por um algoritmo terá, pois,
a propriedade de que uk+1 pode ser determinado com certeza a partir do conhecimento
de u1, u2, …, uk, e não será, portanto, aleatória, no sentido pretendido. Como pode
então tal comportamento, perfeitamente previsível, ser usado para produzir números
utilizáveis numa simulação ?
         A resposta está em que, na simulação, estamos interessados apenas em
estatísticas de longo prazo. Sob condições adequadas, uma sequência de números
gerados por um algoritmo pode ter as mesmas propriedades estatísticas que uma
sequência gerada por um processo aleatório natural.
         Uma sequência de números que seja gerada por um algoritmo mas seja
intermutável com outra sequência verdadeiramente aleatória é chamada
pseudo-aleatória.

          Uma sequência de números é pseudo-aleatória se qualquer
   subsequência suficientemente curta for intermutável com uma sequência
   comparável realmente aleatória.

        A única diferença inevitável entre uma sequência aleatória e uma pseudo-
-aleatória é que esta última se pode repetir — e isto justifica a expressão
“suficientemente curta” na definição. O período de repetição do algoritmo deve,
assim, ser mais longo que a sequência de números necessária à simulação.

Geradores de números aleatórios
       Feita a distinção entre sequências produzidas por processos aleatórios naturais
e sequências pseudo-aleatórias produzidas por algoritmos, é convencional usar uma
terminologia que ignora essa distinção. Assim, um algoritmo para geração duma
sequência de números pseudo-aleatórios é habitualmente chamado simplesmente
gerador de números aleatórios, sendo comum chamar números aleatórios aos
números das sequências pseudo-aleatórias, assim como número aleatório a um
elemento da sequência, embora o conceito de aleatoriedade se aplique
verdadeiramente à sequência como um todo.
       Há muitos algoritmos para gerar números aleatórios, diferindo na medida em
que exibem as seguintes propriedades desejáveis:
       • Comprimento do período de repetição
       • Independência estatística aparente de números sucessivos
       • Distribuição uniforme




2007 MC–IST OR {RandomNumGen.doc}
• Rapidez de obtenção
       • Repetibilidade (reprodutibilidade)
       As propriedades citadas são dificilmente conciliáveis, pelo que a selecção dum
gerador conveniente para uma dada simulação pode ser uma tarefa não-trivial.

1.     O algoritmo congruencial multiplicativo
       É o mais simples gerador de números aleatórios.
           0.   Fixe os parâmetros p e m
           1.   Seja u0 o número inicial, não-nulo e ímpar; k = 0
           2.   uk+1 = (m uk) mod p
           3.   k ← k + 1; goto 2
       Todos os números intervenientes no algoritmo são inteiros não-negativos. O
parâmetro m é o multiplicador, p é o módulo e o número u0 é a semente. O passo
principal do algoritmo é a fórmula de recorrência do Passo 2, sendo, como se sabe,
                         x mod p = resto da divisão (inteira) de x por p
        Se nenhum uk for zero, os inteiros que se podem gerar vão de 1 a p – 1, logo
(uk – 1) vai de 0 a p – 2 e os correspondentes números reais rk do intervalo [0, 1]
                     u −1
obter-se-ão por rk = k     . Para ver como o algoritmo funciona, considere-se o
                      p−2
seguinte exemplo, arbitrando-se p = 17, m = 5 e u0 = 7:
       u1 = (5 × 7) mod 17 = resto da divisão inteira de 35 17 = 1
       u2 = (5 × 1) mod 17 = 5
       u3 = (5 × 5) mod 17 = 8
Continuando o processo, obtém-se:
       7, 1, 5, 8, 6, 13, 14, 2, 10, 16, 12, 9, 11, 4, 3, 15, (R) 7, 1, 5, 8, …
Após R, verifica-se repetição, pelo que o período foi de 16 números. (Dir-se-á adiante
que p = 17 foi uma escolha feliz.) O período é sempre menor que o parâmetro p, logo
p deve ser escolhido tão grande quanto possível. Devido a considerações de
eficiência computacional, se o comprimento de “palavra” for w bits e fizermos p = 2w,
a multiplicação na fórmula de recorrência dá um resultado com comprimento de
“palavra dupla”, sendo a palavra de mais baixa ordem o produto módulo 2w. Outra
escolha corrente para p é 2w–1. Em qualquer dos casos, o facto de nenhuma divisão
(propriamente dita) ser necessária para efectuar a operação de “módulo” dá vantagem
sobre outros valores de p.
        É possível que o período seja muito menor que p, se o multiplicador m for
uma escolha “infeliz” (veja-se p = 10, m = 5, u0 = 5). Para obter o período máximo,
que é p – 1, m deve ser escolhido de modo a que m – 1 seja múltiplo de todos os
números primos submúltiplos de p. Por outro lado, para que a sequência gerada tenha
boas propriedades estatísticas, m deve ser próximo de p e a sequência usada
numa simulação não deve ser mais longa que a raiz quadrada do período de
repetição.
Investigação Operacional      Núm. pseudo-aleatórios • Pág. 3 de 4




       O gerador congruencial multiplicativo mais vulgar, disponível em Fortran
como sub-rotina RANDU, tem p = 231 = 2 147 483 648 (note-se que este inteiro excede
em 1 o máximo habitualmente representável) e m = 216 + 3 = 65 539. Estas escolhas
dão um período de 229 (ca. 109) números e o algoritmo corre rapidamente em
computadores com um comprimento de palavra de 32 bits. No entanto, as sequências
produzidas têm propriedades estatísticas inconvenientes para muitas situações.

2.     Outros geradores de números aleatórios uniformes
       Obtêm-se propriedades estatísticas melhoradas adicionando uma constante à
fórmula de recorrência congruencial multiplicativa:
                                 uk+1 = (a + m uk) mod p
O número a é o incremento e um algoritmo com esta fórmula da recorrência chama-
-se um gerador congruencial linear ou congruencial misto. Um destes algoritmos
que apresenta boas propriedades estatísticas usa:
       p = 2 147 483 648               = 231

       m = 843 314 861                 [J p (π / 8) + 5 =? 843 314 861,5]

       a = 453 816 693                         (      )
                                       [J p 3 − 3 6 = 453 816 692,9]

        Outro método com boas propriedades estatísticas é o algoritmo GPSS.
Ilustrar-se-á com um exemplo de inteiros decimais, embora seja realmente efectuado
em aritmética binária em computador. Suponhamos que se pretendem gerar números
rk entre 0,0000 e 0,9999. Começamos com um multiplicador m, fixo, e uma semente
u0:
                                        m = 5167

                                        u0 = 3729
O produto terá oito dígitos.
                           m u0 = 19 267 743       (19 2677 43)
Os quatro dígitos centrais formarão o primeiro número aleatório r1 e os quatro dígitos
da direita serão usados como u1. Assim,
                                        r1 = 0,2677
                                       u1 = 7743
Em seguida, é formado o produto m u1, extraídos os seus quatro dígitos centrais como
dígitos de r2 e os quatro dígitos da direita como u2 e assim por diante.
        Um algoritmo aparentado, o do quadrado do meio (“mid-square algorithm”),
muito simples mas de propriedades insatisfatórias, é o que se exemplifica adiante.
Seja r1 = 9876; r2 será formado pelos quatro algarismos centrais do número de oito
algarismos que é r12 (eventualmente completado à esquerda com zeros).
r2 = {4 algarismos centrais de r12 } = {4 alg. c. de 97 5353 76} = 5353

       r3 = {4 algarismos centrais de r22 } = {4 alg. c. de 28 6546 09} = 6546
Além da questão da repetição de período, poderá chegar-se a uma situação como a
seguinte (se fosse rk = 2001)
       rk+1 = {4 algarismos centrais de rk2 } = {4 alg. c. de 04. 004.0 01} = 40

       rk+2 = {4 alg. c. de 00 001.6 00} = 16

       rk+3 = {4 alg. c. de 00 0002 56} = 2

       rk+4 = {4 alg. c. de 00 0000 04} = 0
e daí em diante sempre 0.

3.     Aplicação a uma distribuição especificada
        Na situação mais frequente de a variável aleatória a simular não seguir a
distribuição uniforme, a técnica a utilizar é a seguinte, aqui ilustrada com uma
distribuição exponencial de parâmetro c.
        f ( x ) = c e − cx                  com       0≤x≤1

                    x
       F( x ) = ∫ f (t ) d t = 1 − e − cx
                   0

pois que, obviamente, F(0) = 0. Invertendo a função, vem
                                                 ln(1 − F )
                                            x=
                                                    −c
Fazendo F = u, com u número aleatório uniforme, será
                                                 ln(1 − u)
                                            x=
                                                    −c
ou —visto que, se u é uniforme em [0, 1], 1 – u também o é—, mais simplesmente,
                                                   ln u
                                             x=
                                                    −c
Assim, conhecido c, obtida uma série de números aleatórios u (uniformes), dispor-se-
á duma série de números aleatórios x, com uma distribuição exponencial especificada.

                                                 §o§

Más contenido relacionado

La actualidad más candente

Sries de taylor e de maclaurin
Sries de taylor e de maclaurinSries de taylor e de maclaurin
Sries de taylor e de maclaurinLuciana Costa
 
Lista de exercícios 8 - Mat Elem
Lista de exercícios 8 - Mat ElemLista de exercícios 8 - Mat Elem
Lista de exercícios 8 - Mat ElemCarlos Campani
 
Os Teoremas de Euler e Wilson
Os Teoremas de Euler e WilsonOs Teoremas de Euler e Wilson
Os Teoremas de Euler e WilsonLuciana Martino
 
Equações Algébricas e Transcendentes - Isolamento de Raízes - @professorenan
Equações Algébricas e Transcendentes - Isolamento de Raízes - @professorenanEquações Algébricas e Transcendentes - Isolamento de Raízes - @professorenan
Equações Algébricas e Transcendentes - Isolamento de Raízes - @professorenanRenan Gustavo
 
Equação de Recorrência - I (Otimização)
Equação de Recorrência - I (Otimização)Equação de Recorrência - I (Otimização)
Equação de Recorrência - I (Otimização)Jedson Guedes
 
Material sobre a Derivada
Material sobre a DerivadaMaterial sobre a Derivada
Material sobre a DerivadaEinstein Rafael
 
Métodos Iterativos - Gauss-Seidel - @professorenan
Métodos Iterativos - Gauss-Seidel - @professorenanMétodos Iterativos - Gauss-Seidel - @professorenan
Métodos Iterativos - Gauss-Seidel - @professorenanRenan Gustavo
 
Lista de exercícios 2 - Cálculo
Lista de exercícios 2 - CálculoLista de exercícios 2 - Cálculo
Lista de exercícios 2 - CálculoCarlos Campani
 
FUNÇÕES: DEFINIÇÃO, DOMÍNIO, IMAGEM E GRÁFICO DE FUNÇÃO
FUNÇÕES: DEFINIÇÃO, DOMÍNIO, IMAGEM E GRÁFICO DE FUNÇÃOFUNÇÕES: DEFINIÇÃO, DOMÍNIO, IMAGEM E GRÁFICO DE FUNÇÃO
FUNÇÕES: DEFINIÇÃO, DOMÍNIO, IMAGEM E GRÁFICO DE FUNÇÃOCarlos Campani
 
PROPRIEDADES DAS FUNÇÕES
PROPRIEDADES DAS FUNÇÕESPROPRIEDADES DAS FUNÇÕES
PROPRIEDADES DAS FUNÇÕESCarlos Campani
 
Funções e suas propriedades analíticas
Funções e suas propriedades analíticasFunções e suas propriedades analíticas
Funções e suas propriedades analíticasCarlos Campani
 
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...Universidade de São Paulo
 
Funções, suas propriedades e gráfico
Funções, suas propriedades e gráficoFunções, suas propriedades e gráfico
Funções, suas propriedades e gráficoCarlos Campani
 
18 series de taylor e de maclaurin
18 series de taylor e de maclaurin18 series de taylor e de maclaurin
18 series de taylor e de maclaurinGabriela Cristina
 
Funções exponencial e logarítmica
Funções exponencial e logarítmicaFunções exponencial e logarítmica
Funções exponencial e logarítmicaCarlos Campani
 

La actualidad más candente (20)

Sries de taylor e de maclaurin
Sries de taylor e de maclaurinSries de taylor e de maclaurin
Sries de taylor e de maclaurin
 
Lista de exercícios 8 - Mat Elem
Lista de exercícios 8 - Mat ElemLista de exercícios 8 - Mat Elem
Lista de exercícios 8 - Mat Elem
 
Funções Elementares
Funções ElementaresFunções Elementares
Funções Elementares
 
Função exponencial
Função exponencialFunção exponencial
Função exponencial
 
Os Teoremas de Euler e Wilson
Os Teoremas de Euler e WilsonOs Teoremas de Euler e Wilson
Os Teoremas de Euler e Wilson
 
Equações Algébricas e Transcendentes - Isolamento de Raízes - @professorenan
Equações Algébricas e Transcendentes - Isolamento de Raízes - @professorenanEquações Algébricas e Transcendentes - Isolamento de Raízes - @professorenan
Equações Algébricas e Transcendentes - Isolamento de Raízes - @professorenan
 
Equação de Recorrência - I (Otimização)
Equação de Recorrência - I (Otimização)Equação de Recorrência - I (Otimização)
Equação de Recorrência - I (Otimização)
 
Material sobre a Derivada
Material sobre a DerivadaMaterial sobre a Derivada
Material sobre a Derivada
 
Métodos Iterativos - Gauss-Seidel - @professorenan
Métodos Iterativos - Gauss-Seidel - @professorenanMétodos Iterativos - Gauss-Seidel - @professorenan
Métodos Iterativos - Gauss-Seidel - @professorenan
 
Lista de exercícios 2 - Cálculo
Lista de exercícios 2 - CálculoLista de exercícios 2 - Cálculo
Lista de exercícios 2 - Cálculo
 
FUNÇÕES: DEFINIÇÃO, DOMÍNIO, IMAGEM E GRÁFICO DE FUNÇÃO
FUNÇÕES: DEFINIÇÃO, DOMÍNIO, IMAGEM E GRÁFICO DE FUNÇÃOFUNÇÕES: DEFINIÇÃO, DOMÍNIO, IMAGEM E GRÁFICO DE FUNÇÃO
FUNÇÕES: DEFINIÇÃO, DOMÍNIO, IMAGEM E GRÁFICO DE FUNÇÃO
 
PROPRIEDADES DAS FUNÇÕES
PROPRIEDADES DAS FUNÇÕESPROPRIEDADES DAS FUNÇÕES
PROPRIEDADES DAS FUNÇÕES
 
Função Exponencial
Função ExponencialFunção Exponencial
Função Exponencial
 
Funções e suas propriedades analíticas
Funções e suas propriedades analíticasFunções e suas propriedades analíticas
Funções e suas propriedades analíticas
 
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
 
Função Inversa
Função InversaFunção Inversa
Função Inversa
 
Funções, suas propriedades e gráfico
Funções, suas propriedades e gráficoFunções, suas propriedades e gráfico
Funções, suas propriedades e gráfico
 
Zero de função
Zero de funçãoZero de função
Zero de função
 
18 series de taylor e de maclaurin
18 series de taylor e de maclaurin18 series de taylor e de maclaurin
18 series de taylor e de maclaurin
 
Funções exponencial e logarítmica
Funções exponencial e logarítmicaFunções exponencial e logarítmica
Funções exponencial e logarítmica
 

Similar a Gerando Números Pseudo-Aleatórios

Aplicacao da Formula Luderiana Racional para Raiz Cubica
Aplicacao da Formula Luderiana Racional para Raiz CubicaAplicacao da Formula Luderiana Racional para Raiz Cubica
Aplicacao da Formula Luderiana Racional para Raiz Cubicaludenir
 
Metódos de Pesquisa em C
Metódos de Pesquisa em CMetódos de Pesquisa em C
Metódos de Pesquisa em Crodolfoeyalana
 
Booklet reais
Booklet reaisBooklet reais
Booklet reaispm3d
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmosRicardo Bolanho
 
Analise Comb E Probabilidades
Analise Comb E ProbabilidadesAnalise Comb E Probabilidades
Analise Comb E Probabilidadesgueste0e57c
 
Analise Comb E Probabilidades
Analise Comb E ProbabilidadesAnalise Comb E Probabilidades
Analise Comb E ProbabilidadesISJ
 
FORTRAN 90 - Representacao numeroscomputador
FORTRAN 90 - Representacao numeroscomputadorFORTRAN 90 - Representacao numeroscomputador
FORTRAN 90 - Representacao numeroscomputadorDafmet Ufpel
 
Criptografia com curva_eliptica_dbetoni
Criptografia com curva_eliptica_dbetoniCriptografia com curva_eliptica_dbetoni
Criptografia com curva_eliptica_dbetonidrbetoni
 
Desenvolvimento análise de sistemas lineares
Desenvolvimento análise de sistemas linearesDesenvolvimento análise de sistemas lineares
Desenvolvimento análise de sistemas linearesMaique Mateus
 
MODEL-REFERENCE ADAPTIVE SYSTEMS (MRAS)
MODEL-REFERENCE ADAPTIVE SYSTEMS (MRAS)MODEL-REFERENCE ADAPTIVE SYSTEMS (MRAS)
MODEL-REFERENCE ADAPTIVE SYSTEMS (MRAS)Pedro Barata
 
Matemática 8ª classe lição 4
Matemática 8ª classe lição 4 Matemática 8ª classe lição 4
Matemática 8ª classe lição 4 Nivea Neves
 
Apontamento quantica
Apontamento quanticaApontamento quantica
Apontamento quanticaRaiane Sodré
 
Cálculo Numérico
Cálculo NuméricoCálculo Numérico
Cálculo NuméricoSandro Lima
 

Similar a Gerando Números Pseudo-Aleatórios (20)

Revisao 2 2019.pdf
Revisao 2 2019.pdfRevisao 2 2019.pdf
Revisao 2 2019.pdf
 
Aplicacao da Formula Luderiana Racional para Raiz Cubica
Aplicacao da Formula Luderiana Racional para Raiz CubicaAplicacao da Formula Luderiana Racional para Raiz Cubica
Aplicacao da Formula Luderiana Racional para Raiz Cubica
 
Metódos de Pesquisa em C
Metódos de Pesquisa em CMetódos de Pesquisa em C
Metódos de Pesquisa em C
 
Booklet reais
Booklet reaisBooklet reais
Booklet reais
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmos
 
Analise Comb E Probabilidades
Analise Comb E ProbabilidadesAnalise Comb E Probabilidades
Analise Comb E Probabilidades
 
Analise Comb E Probabilidades
Analise Comb E ProbabilidadesAnalise Comb E Probabilidades
Analise Comb E Probabilidades
 
Apostila rpira
Apostila rpiraApostila rpira
Apostila rpira
 
Pequeno teorema de fermat
Pequeno teorema de fermatPequeno teorema de fermat
Pequeno teorema de fermat
 
Gustavo relatorio
Gustavo relatorioGustavo relatorio
Gustavo relatorio
 
Pesquisa sequencial
Pesquisa sequencialPesquisa sequencial
Pesquisa sequencial
 
FORTRAN 90 - Representacao numeroscomputador
FORTRAN 90 - Representacao numeroscomputadorFORTRAN 90 - Representacao numeroscomputador
FORTRAN 90 - Representacao numeroscomputador
 
Criptografia com curva_eliptica_dbetoni
Criptografia com curva_eliptica_dbetoniCriptografia com curva_eliptica_dbetoni
Criptografia com curva_eliptica_dbetoni
 
Desenvolvimento análise de sistemas lineares
Desenvolvimento análise de sistemas linearesDesenvolvimento análise de sistemas lineares
Desenvolvimento análise de sistemas lineares
 
MODEL-REFERENCE ADAPTIVE SYSTEMS (MRAS)
MODEL-REFERENCE ADAPTIVE SYSTEMS (MRAS)MODEL-REFERENCE ADAPTIVE SYSTEMS (MRAS)
MODEL-REFERENCE ADAPTIVE SYSTEMS (MRAS)
 
Resumo Matemática 3º Ciclo
Resumo Matemática 3º CicloResumo Matemática 3º Ciclo
Resumo Matemática 3º Ciclo
 
Matemática 8ª classe lição 4
Matemática 8ª classe lição 4 Matemática 8ª classe lição 4
Matemática 8ª classe lição 4
 
Apontamento quantica
Apontamento quanticaApontamento quantica
Apontamento quantica
 
Calculo numerico
Calculo numerico Calculo numerico
Calculo numerico
 
Cálculo Numérico
Cálculo NuméricoCálculo Numérico
Cálculo Numérico
 

Gerando Números Pseudo-Aleatórios

  • 1. Simulação: geração de números pseudo-aleatórios A ideia de gerar sequências aleatórias através dum algoritmo numérico pode parecer inteiramente inadequada [Ecker & Kupferschmid, 1988]. Os algoritmos do género que se podem implementar num programa de computador são, por definição, completamente determinísticos e nunca podem, portanto, produzir um efeito aleatório de qualquer tipo. Se um computador estiver a funcionar normalmente, oferece precisamente o mesmo resultado de cada vez que executa uma operação sobre os mesmos dados. Qualquer sequência de números gerados por um algoritmo terá, pois, a propriedade de que uk+1 pode ser determinado com certeza a partir do conhecimento de u1, u2, …, uk, e não será, portanto, aleatória, no sentido pretendido. Como pode então tal comportamento, perfeitamente previsível, ser usado para produzir números utilizáveis numa simulação ? A resposta está em que, na simulação, estamos interessados apenas em estatísticas de longo prazo. Sob condições adequadas, uma sequência de números gerados por um algoritmo pode ter as mesmas propriedades estatísticas que uma sequência gerada por um processo aleatório natural. Uma sequência de números que seja gerada por um algoritmo mas seja intermutável com outra sequência verdadeiramente aleatória é chamada pseudo-aleatória. Uma sequência de números é pseudo-aleatória se qualquer subsequência suficientemente curta for intermutável com uma sequência comparável realmente aleatória. A única diferença inevitável entre uma sequência aleatória e uma pseudo- -aleatória é que esta última se pode repetir — e isto justifica a expressão “suficientemente curta” na definição. O período de repetição do algoritmo deve, assim, ser mais longo que a sequência de números necessária à simulação. Geradores de números aleatórios Feita a distinção entre sequências produzidas por processos aleatórios naturais e sequências pseudo-aleatórias produzidas por algoritmos, é convencional usar uma terminologia que ignora essa distinção. Assim, um algoritmo para geração duma sequência de números pseudo-aleatórios é habitualmente chamado simplesmente gerador de números aleatórios, sendo comum chamar números aleatórios aos números das sequências pseudo-aleatórias, assim como número aleatório a um elemento da sequência, embora o conceito de aleatoriedade se aplique verdadeiramente à sequência como um todo. Há muitos algoritmos para gerar números aleatórios, diferindo na medida em que exibem as seguintes propriedades desejáveis: • Comprimento do período de repetição • Independência estatística aparente de números sucessivos • Distribuição uniforme 2007 MC–IST OR {RandomNumGen.doc}
  • 2. • Rapidez de obtenção • Repetibilidade (reprodutibilidade) As propriedades citadas são dificilmente conciliáveis, pelo que a selecção dum gerador conveniente para uma dada simulação pode ser uma tarefa não-trivial. 1. O algoritmo congruencial multiplicativo É o mais simples gerador de números aleatórios. 0. Fixe os parâmetros p e m 1. Seja u0 o número inicial, não-nulo e ímpar; k = 0 2. uk+1 = (m uk) mod p 3. k ← k + 1; goto 2 Todos os números intervenientes no algoritmo são inteiros não-negativos. O parâmetro m é o multiplicador, p é o módulo e o número u0 é a semente. O passo principal do algoritmo é a fórmula de recorrência do Passo 2, sendo, como se sabe, x mod p = resto da divisão (inteira) de x por p Se nenhum uk for zero, os inteiros que se podem gerar vão de 1 a p – 1, logo (uk – 1) vai de 0 a p – 2 e os correspondentes números reais rk do intervalo [0, 1] u −1 obter-se-ão por rk = k . Para ver como o algoritmo funciona, considere-se o p−2 seguinte exemplo, arbitrando-se p = 17, m = 5 e u0 = 7: u1 = (5 × 7) mod 17 = resto da divisão inteira de 35 17 = 1 u2 = (5 × 1) mod 17 = 5 u3 = (5 × 5) mod 17 = 8 Continuando o processo, obtém-se: 7, 1, 5, 8, 6, 13, 14, 2, 10, 16, 12, 9, 11, 4, 3, 15, (R) 7, 1, 5, 8, … Após R, verifica-se repetição, pelo que o período foi de 16 números. (Dir-se-á adiante que p = 17 foi uma escolha feliz.) O período é sempre menor que o parâmetro p, logo p deve ser escolhido tão grande quanto possível. Devido a considerações de eficiência computacional, se o comprimento de “palavra” for w bits e fizermos p = 2w, a multiplicação na fórmula de recorrência dá um resultado com comprimento de “palavra dupla”, sendo a palavra de mais baixa ordem o produto módulo 2w. Outra escolha corrente para p é 2w–1. Em qualquer dos casos, o facto de nenhuma divisão (propriamente dita) ser necessária para efectuar a operação de “módulo” dá vantagem sobre outros valores de p. É possível que o período seja muito menor que p, se o multiplicador m for uma escolha “infeliz” (veja-se p = 10, m = 5, u0 = 5). Para obter o período máximo, que é p – 1, m deve ser escolhido de modo a que m – 1 seja múltiplo de todos os números primos submúltiplos de p. Por outro lado, para que a sequência gerada tenha boas propriedades estatísticas, m deve ser próximo de p e a sequência usada numa simulação não deve ser mais longa que a raiz quadrada do período de repetição.
  • 3. Investigação Operacional Núm. pseudo-aleatórios • Pág. 3 de 4 O gerador congruencial multiplicativo mais vulgar, disponível em Fortran como sub-rotina RANDU, tem p = 231 = 2 147 483 648 (note-se que este inteiro excede em 1 o máximo habitualmente representável) e m = 216 + 3 = 65 539. Estas escolhas dão um período de 229 (ca. 109) números e o algoritmo corre rapidamente em computadores com um comprimento de palavra de 32 bits. No entanto, as sequências produzidas têm propriedades estatísticas inconvenientes para muitas situações. 2. Outros geradores de números aleatórios uniformes Obtêm-se propriedades estatísticas melhoradas adicionando uma constante à fórmula de recorrência congruencial multiplicativa: uk+1 = (a + m uk) mod p O número a é o incremento e um algoritmo com esta fórmula da recorrência chama- -se um gerador congruencial linear ou congruencial misto. Um destes algoritmos que apresenta boas propriedades estatísticas usa: p = 2 147 483 648 = 231 m = 843 314 861 [J p (π / 8) + 5 =? 843 314 861,5] a = 453 816 693 ( ) [J p 3 − 3 6 = 453 816 692,9] Outro método com boas propriedades estatísticas é o algoritmo GPSS. Ilustrar-se-á com um exemplo de inteiros decimais, embora seja realmente efectuado em aritmética binária em computador. Suponhamos que se pretendem gerar números rk entre 0,0000 e 0,9999. Começamos com um multiplicador m, fixo, e uma semente u0: m = 5167 u0 = 3729 O produto terá oito dígitos. m u0 = 19 267 743 (19 2677 43) Os quatro dígitos centrais formarão o primeiro número aleatório r1 e os quatro dígitos da direita serão usados como u1. Assim, r1 = 0,2677 u1 = 7743 Em seguida, é formado o produto m u1, extraídos os seus quatro dígitos centrais como dígitos de r2 e os quatro dígitos da direita como u2 e assim por diante. Um algoritmo aparentado, o do quadrado do meio (“mid-square algorithm”), muito simples mas de propriedades insatisfatórias, é o que se exemplifica adiante. Seja r1 = 9876; r2 será formado pelos quatro algarismos centrais do número de oito algarismos que é r12 (eventualmente completado à esquerda com zeros).
  • 4. r2 = {4 algarismos centrais de r12 } = {4 alg. c. de 97 5353 76} = 5353 r3 = {4 algarismos centrais de r22 } = {4 alg. c. de 28 6546 09} = 6546 Além da questão da repetição de período, poderá chegar-se a uma situação como a seguinte (se fosse rk = 2001) rk+1 = {4 algarismos centrais de rk2 } = {4 alg. c. de 04. 004.0 01} = 40 rk+2 = {4 alg. c. de 00 001.6 00} = 16 rk+3 = {4 alg. c. de 00 0002 56} = 2 rk+4 = {4 alg. c. de 00 0000 04} = 0 e daí em diante sempre 0. 3. Aplicação a uma distribuição especificada Na situação mais frequente de a variável aleatória a simular não seguir a distribuição uniforme, a técnica a utilizar é a seguinte, aqui ilustrada com uma distribuição exponencial de parâmetro c. f ( x ) = c e − cx com 0≤x≤1 x F( x ) = ∫ f (t ) d t = 1 − e − cx 0 pois que, obviamente, F(0) = 0. Invertendo a função, vem ln(1 − F ) x= −c Fazendo F = u, com u número aleatório uniforme, será ln(1 − u) x= −c ou —visto que, se u é uniforme em [0, 1], 1 – u também o é—, mais simplesmente, ln u x= −c Assim, conhecido c, obtida uma série de números aleatórios u (uniformes), dispor-se- á duma série de números aleatórios x, com uma distribuição exponencial especificada. §o§