atividade 02 - geração de números aleatórios
Post on 03-Jul-2015
538 Views
Preview:
TRANSCRIPT
R. Bela Cintra, 934 . 01415-000 . São Paulo - SP . (11) 3138.5200 . faculdade@trevisan.com.br
ATIVIDADE 02
Método Congruencial de Geração de Números Aleatórios Segundo uma
Distribuição Uniforme
Prof. Severino Carlos de Oliveira Filho
Trevisan Escola de Negócios
1. Introdução
“A geração de números aleatórios é muito importante para ser deixada a cargo do acaso.”
Robert R. Coveyou
A geração de números aleatórios é de grande importância para a simulação porque as simulações
freqüentemente incluem elementos de natureza estocástica.
Desta maneira a geração de números aleatórios é utilizada em simulações na tentativa de alcançar
dois objetivos principais:
Assegurar que os valores sejam seguramente aleatórios
Gerar os valores nas proporções corretas.
Em muitas situações de análise e resolução de problemas é necessário usar números que se
distribuem ao acaso. Na década de 1920, Leonard H. C. Tippert, durante a demonstração de uma nova
idéia estatística, necessitou de um grande conjunto de dados aleatórios. Sua primeira tentativa foi gerar
5000 números aleatórios misturando e sorteando pequenos cartões numerados em um saco. Tal método
provou ser de difícil aplicação e a mistura dos cartões não era suficiente para garantir a aleatoriedade.
Posteriormente passou-se a se lançar mão de tabelas em papel que registravam números
construídos a partir de algarismos sorteados através de algum aparato físico.
Em seu trabalho publicado em 1925, Tipper descreve sua pesquisa que acabou desenvolvendo
elementos para a obtenção de 40.000 dígitos retirados ao acaso de áreas de distritos do censo.
Apenas dez anos após sua publicação, a tabela de Tipper com mais de 40.000 números de
amostragem aleatória já era considerada insuficiente para experiência com amostragens muito grandes.
No ano de 1938 os matemmáticos R. A. Fisher e F. Yates publicaram 15.000 dígitos aleatórios adicionais,
selecionados entre a 15ª e 19ª casa decimal; de expressões logarítmicas.
____________________________________________________________________________
Rua Bela Cintra, nº 934 – Cerqueira César – 01415-000 – São Paulo – SP - Tel. (11) 31385200 – FAX 31385231 www.faculdadetrevisan.br
2
Em 1939, M. G. Kendall e B.Babington-Smith publicaram um tabela com 100.000 dígitos que
foram dispostos de forma aleatória por uma máquina construída a partir de um disco giratório, que era
dividido em dez setores e, enquanto girava, um dos setores era momentaneamente iluminado por uma
lâmpada de néon que piscava.
Em 1955 a RAND Corporation publicou uma tabela com um milhão de dígitos aleatórios, essa
tabela foi desenvolvida pela re-aleatorização de uma tabela de dígitos gerados pelo pulsos de freqüência
aleatória de uma roleta eletrônica.
Atualmente se utilizam computadores na análise e resolução de problemas com necessidade de
quantidades muito maiores de números aleatórios. Isso exigiu o desenvolvimento de técnicas especiais de
geração destes números.
A geração de números aleatórios num computador é realizada através de funções matemáticas. As
funções produzem seqüências de números que parecem ser gerados de forma aleatória. Efetivamente os
números são gerados de forma totalmente previsível. As funções tipicamente empregadas possuem o
seguinte aspecto:
mcxax nn mod).(1
Essa é uma fórmula de recorrência que gera números inteiros positivos ou nulos. O operador “mod
m” significa “resto da divisão inteira por m”.
Exemplo: 25mod7 49mod49
Os valores a, c e m são parâmetros fixos convenientemente escolhidos para obter números que
pareçam aleatórios. A fórmula gera o próximo número aleatório x(n+1) a partir do último x(n) gerado. A
série se inicia a partir de um número inicial x0, denominado semente, escolhido pelo usuário. Para uma
mesma semente sempre é gerada a mesma seqüência de números. Para gerar seqüências diferentes
devemos variar apenas a semente, observando que ela apenas altera o início da série.
Como o resultado é o resto de uma divisão inteira por m isso significa que os números gerados
estão no intervalo de zero até (m -1). Em geral estamos interessados que a fórmula gere todos os números
____________________________________________________________________________
Rua Bela Cintra, nº 934 – Cerqueira César – 01415-000 – São Paulo – SP - Tel. (11) 31385200 – FAX 31385231 www.faculdadetrevisan.br
3
neste intervalo antes de começar a repetir os números gerados. Uma conveniente escolha dos parâmetros
a e c permite atingir esse objetivo.
Além disso, é desejado que os números pareçam gerados ao acaso. Existem testes estatísticos para
avaliar esta pseudo aleatoriedade, mas que não serão discutidos. Alguns valores de a, c e m já foram
testados e são utilizados nas funções de geração de números aleatórios de planilhas e softwares de
simulação, por exemplo, a = 16807, c = 0 e m = 2147483647 .
Observe que o valor de “m” é igual a (2^ 31 - 1) e que é o maior número inteiro positivo que pode
ser armazenado em uma variável de 32 bits do PC (variável de dupla precisão). O valor de “a” usado é
igual a 7^ 5.
2. Técnicas de Geração de Números Aleatórios
2.1. Método Congruencial Linear
O método congruencial de gerar números pseudo – aleatórios foi descrito primeiramente por
Lehmer [1951] e consiste na construção de uma seqüência Ri de números aleatórios utilizando a
fórmula de recorrência da seguinte maneira:
mcxax nn mod).(1
mxRi i
,.......3,2,1i
onde:
x0 → semente
a → constante multiplicativa
c → incremento
(mod m ) →corresponde ao resto da divisão de axn+c por m.
c=0 → método congruencial multiplicativo
c≠0 → método congruencial misto
____________________________________________________________________________
Rua Bela Cintra, nº 934 – Cerqueira César – 01415-000 – São Paulo – SP - Tel. (11) 31385200 – FAX 31385231 www.faculdadetrevisan.br
4
A geração produz valores no range [0,m-1[ ou seja Xi={0,..........,m-1} sendo assim, para
gerarmos valores no intervalo [0,1[ deve-se dividir os elementos gerados por “m”.
Assim obtém-se uma nova seqüência
mx
mx
mxR m
i110 ,........,
Como visto anteriormente a escolha dos valores de a, c e m influencia drasticamente na geração da
seqüência de números aleatórios alterando suas propriedades estatísticas e o comprimento do ciclo..
A fórmula de recorrência gera a mesma seqüência de números para uma determinada semente
inicial x0. Isto é conveniente pois permite realizar testes sucessivos sempre com os mesmos números
aleatórios facilitando a correção de enganos e erros. Em outras situações pode ser desejado que estes
números variem, por exemplo, ao realizar simulações sucessivas. Para tanto é necessário implantar uma
semente que mude de simulação para simulação pois agora, a cada nova tentativa ou teste, não se deseja
replicar os resultados.
A seqüência Ri assume valores exclusivamente no conjunto:
m
mmmm
I 1,.....,3,2,1,0
Conseqüentemente, o valor de m determina:
•o máximo ciclo;
•a máxima densidade.
É possível que o máximo ciclo seja menor que m, basta que algum elemento de I se repita, logo é
desejável que m seja máximo, embora isto não garanta todas as propriedades.
Do ponto de vista prático, m é limitado pelo máximo inteiro representável no computador, que
num computador com palavras de 32 bits, m ≤231-1 2,15 ×109.
2.2. Possíveis problemas:
Os números gerados podem não estar uniformemente distribuídos;
Os números gerados podem assumir valores discretos, em vez de contínuos;
Desvio na média;
____________________________________________________________________________
Rua Bela Cintra, nº 934 – Cerqueira César – 01415-000 – São Paulo – SP - Tel. (11) 31385200 – FAX 31385231 www.faculdadetrevisan.br
5
Desvio na variância;
Podem haver variações cíclicas:
o autocorrelação entre números;
o números crescentes ou decrescentes;
o muitos números acima da média seguidos de muitos números abaixo da média.
2.3. Características desejáveis:
É desejável que algumas características estejam presentes e sejam satisfeitas na construção de uma
seqüência de números aleatórios.
Como exemplo pode-se citar:
Rapidez;
Portabilidade;
Ciclo longo;
Reprodutibilidade;
Uniformidade e independência.
Sendo assim a criação de um gerador de números aleatórios através do método congruemcial deve
garantir que as seguintes premissas sejam satisfeitas:
O comprimento do ciclo ou período da seqüência deve conter o maior números de valores
possíveis.
o O ciclo deve ser o maior possível
o O valor de m deve ser tão grande quanto possível
o Uma seqüência de um único período seria desejável
A seqüência de valores gerados deve parecer independente, isto quer dizer que todos os
valores do range devem ter a mesma chance aparecer em qualquer lugar da seqüência..
A seqüência deve ser gerada da maneira mais eficiente possível
Com o uso de computadores pode-se utilizar suficientemente grande (m =2k ) tal que a
operação de divisão seja feita rapidamente.
____________________________________________________________________________
Rua Bela Cintra, nº 934 – Cerqueira César – 01415-000 – São Paulo – SP - Tel. (11) 31385200 – FAX 31385231 www.faculdadetrevisan.br
6
Do ponto de vista prático m é limitado pelo maior inteiro que possa se representado
num computador .
Num computador com palavras de 32 bits, um valor máximo para m seria 231-1
A distribuição seja uniforme
Todos os valores gerados dentro do range especificado sejam equiprováveis.
2.4. Distribuição Uniforme
A distribuição uniforme é uma distribuição de probabilidade contínua, apresentando densidade
constante num intervalo [a, b].
Notação : Uniform (a,b)
0 se x a ou x b
)(xF
ab
1 se a x b
Sua função de densidade cumulativa é dada por:
bxaxdt
abxF
x
a
1)( , 0 F(X) 1
Assim para gerar a sua inversa devemos ter:
arabrFx )()(1 , 0 < r < 1
____________________________________________________________________________
Rua Bela Cintra, nº 934 – Cerqueira César – 01415-000 – São Paulo – SP - Tel. (11) 31385200 – FAX 31385231 www.faculdadetrevisan.br
7
2.5. Algoritmo
Um algoritmo para gerar uma seqüência de números aleatórios pode ser facilmente gerado em
qualquer linguagem de programação.
Get a, b
r = random(1)
x ( b - a)*r + a
STOP
3. Testes para Seqüências de Números Aleatórios
Os testes têm como objetivo verificar se as valores sugeridos para “a”, “b” e “m” no processo de
geração pelo método conguencial realmente produziram uma seqüência de números aleatórios. Como se
pode demonstrar a aleatoriedade não é garantida para quaisquer que sejam os valores assumidos pelas
constantes “a”, “b” e “m”.
3.1. Gráfico de Dispersão dos Pontos
Plotando-se os pontos num gráfico pode-se inicialmente ter uma idéia sobre o comportamento dos
pontos. Se for detectada alguma uniformidade no posicionamento dos pontos certamente pode-se concluir
que a seqüência não é uniformemente distribuída.
____________________________________________________________________________
Rua Bela Cintra, nº 934 – Cerqueira César – 01415-000 – São Paulo – SP - Tel. (11) 31385200 – FAX 31385231 www.faculdadetrevisan.br
8
200 400 600 800 1000
0.2
0.4
0.6
0.8
1
Gráfico 1 - Distribuição Uniforme – fraco grau de aleatoriedade
200 400 600 800 1000
0.2
0.4
0.6
0.8
1
Gráfico 2 - Distribuição Uniforme – Alto grau de aleatoriedade
B.D. Ripley em sua publicação “Modeling Spatial Patterns “ [1971] dispões de um tratamento
global para tais analises espaciais de padrões.
3.2. Testes de Freqüência
Consiste num procedimento para testar se os valores são uniformemente distribuídos na
seqüência. O teste Qui-Quadrado pode ser facilmente aplicado nestas circunstancias. O intervalo unitário
[0,1] é particionado em k intervalos de tamanho 1/k.
Utilizando testes de hipóteses teremos:
____________________________________________________________________________
Rua Bela Cintra, nº 934 – Cerqueira César – 01415-000 – São Paulo – SP - Tel. (11) 31385200 – FAX 31385231 www.faculdadetrevisan.br
9
H0 (Hipótese nula): A distribuição é uniforme.
H1: A distribuição não é uniforme
O número esperado de números pseudo- aleatórios por segmento é n/k. O número efetivo de
observações por intervalo é kiiN 1 . Portanto, a estatística 1Q possui uma distribuição aproximadamente
qui-quadrado.
Logo
22
1 151
k
ni ki k
k nQ Nn k
.
4. Usando o Excel
O Excel possui funções que podem ser utilizadas no trabalho com os números aleatórios. Cabe
aqui ressaltar que como visto anteriormente a obtenção de números aleatórios é complexa e existem testes
estatísticos para avaliar esta pseudo aleatoriedade.
Testes aplicados em tabelas de números aleatórios gerados pelo Excel demonstraram essa pseudo
aleatoriedade, mas de toda forma trataremos neste curso, de uma forma geral, tais números como
aleatórios.
1 k
1 k
1 k
1 k
1 K intervalos de tamanho 1/k
____________________________________________________________________________
Rua Bela Cintra, nº 934 – Cerqueira César – 01415-000 – São Paulo – SP - Tel. (11) 31385200 – FAX 31385231 www.faculdadetrevisan.br
10
4.1. Função ALEATÓRIO
Categoria:
Matemática e Trigonometria
Sintaxe:
ALEATÓRIO()
Descrição:
Retorna um número aleatório maior ou igual a 0 e menor que 1 distribuído igualmente. Um
novo número aleatório é retornado toda vez que a planilha for calculada.
Comentários
Para gerar um número real aleatório entre a e b, use:
ALEATÓRIO()*(b-a)+a
Se você quiser utilizar ALEATÓRIO para gerar um número aleatório, mas não
quiser mudar os números toda vez que a célula for calculada, poderá inserir
=ALEATÓRIO() na barra de fórmula e pressionar F9 a fim de mudar a fórmula
para um número aleatório.
4.2. Função ALEATÓRIOENTRE
Categoria:
Matemática e Trigonometria
Sintaxe:
ALEATÓRIOENTRE()
Descrição:
Retorna um número aleatório entre os números especificados. Um novo número aleatório
será retornado sempre que a planilha for calculada.
Se esta função não estiver disponível e retornar o erro #NOME?, instale e carregue o
suplemento Ferramentas de análise.
____________________________________________________________________________
Rua Bela Cintra, nº 934 – Cerqueira César – 01415-000 – São Paulo – SP - Tel. (11) 31385200 – FAX 31385231 www.faculdadetrevisan.br
11
Comentários
Inferior é o menor inteiro que ALEATÓRIOENTRE retornará.
Superior é o maior inteiro que ALEATÓRIOENTRE retornará.
4.3. Função MOD
Categoria: Matemática e Trigonometria
Sintaxe: MOD(núm;divisor)
Núm é o número para o qual você deseja encontrar o resto.
Divisor é o número pelo qual você deseja dividir o número.
Descrição:
Retorna o resto depois da divisão de núm por divisor. O resultado possui o mesmo sinal
que divisor.
Comentários:
Se divisor for 0, Resto retornará o valor de erro #DIV/0!.
A função Resto pode ser expressa em termos da função INT:
MOD(n, d) = n - d*INT(n/d)
5. Exercícios
5.1. Utilizando as funções: Aleatório do Excel gerar seqüências de números aleatórios xi nos seguintes
casos:
a) 1;0 ii xeRx
b) 100;0 ii xeRx
c) 100;0 ii xeZx
d) 100;10 ii xeZx
e) [1000;150[ ii xeZx
____________________________________________________________________________
Rua Bela Cintra, nº 934 – Cerqueira César – 01415-000 – São Paulo – SP - Tel. (11) 31385200 – FAX 31385231 www.faculdadetrevisan.br
12
5.2. Utilizando o método congruencial gere uma seqüência de 1000 números aleatórios entre 0 e 1
utilizando os parâmetros a= 7, m=19 e c=0.
a) Faça uma análise da seqüência gerada através de um gráfico de dispersão.
b) Verifique o ciclo máximo da seqüência
5.3. Utilizando o método congruencial gere uma seqüência de 1000 números aleatórios entre 0 e 1
utilizando os parâmetros a= 13, m=64 e c=0.
c) Faça uma análise da seqüência gerada através de um gráfico de dispersão.
d) Verifique o ciclo máximo da seqüência
5.4. Utilizando o método congruencial gere uma seqüência de 1000 números aleatórios entre 0 e 1
utilizando os parâmetros a = 16807, c = 0 e m = 2147483647
a) Faça uma análise da seqüência gerada através de um gráfico de dispersão.
b) Verifique o ciclo máximo da seqüência
Bibliografia Banks, Jerry. “Handbook of Simulation ”, John Wiley & Sons, INC , New York, 1998 Law, Averill M. e Kelton David W.. “Simulation Modeling & Analysis”, McGraw-Hill International Editions, New York, 1991. Pidd, Michael, “Modelagem Empresarial ”, Bookman, Porto Alegre, 1998. Pidd, Michael, “Computer Simulation in Management Science”, John Wiley & Sons, INC , New York, 1992 Gaylor, Richar J.; Kamin, Samuel N. e Wellin, paul R. “Programming with Mathematica” Telos, New York 1996 Graham, Ronald L. ; Knuth, Donald E e Patashnik, Oren ” Matemática Concreta” LTC, Rio de Janeiro 1995 Hartvigsen, David “ SimQuick Process Simulation with Excel” Pearson Prentice Hall,
New Jersey2004
top related