atividade 02 - geração de números aleatórios

12
R. Bela Cintra, 934 . 01415-000 . São Paulo - SP . (11) 3138.5200 . [email protected] 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.

Upload: secaroli

Post on 03-Jul-2015

536 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Atividade 02 - Geração de Números Aleatórios

R. Bela Cintra, 934 . 01415-000 . São Paulo - SP . (11) 3138.5200 . [email protected]

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.

Page 2: Atividade 02 - Geração de Números Aleatórios

____________________________________________________________________________

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

Page 3: Atividade 02 - Geração de Números Aleatórios

____________________________________________________________________________

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

Page 4: Atividade 02 - Geração de Números Aleatórios

____________________________________________________________________________

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;

Page 5: Atividade 02 - Geração de Números Aleatórios

____________________________________________________________________________

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.

Page 6: Atividade 02 - Geração de Números Aleatórios

____________________________________________________________________________

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

Page 7: Atividade 02 - Geração de Números Aleatórios

____________________________________________________________________________

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.

Page 8: Atividade 02 - Geração de Números Aleatórios

____________________________________________________________________________

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:

Page 9: Atividade 02 - Geração de Números Aleatórios

____________________________________________________________________________

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

Page 10: Atividade 02 - Geração de Números Aleatórios

____________________________________________________________________________

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.

Page 11: Atividade 02 - Geração de Números Aleatórios

____________________________________________________________________________

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

Page 12: Atividade 02 - Geração de Números Aleatórios

____________________________________________________________________________

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