Sunteți pe pagina 1din 18

Geraca o de variaveis uniformes no (0, 1)

Estatstica Computacional
Geraca o de variaveis uniformes no (0, 1)

Carlos A. Abanto-Valle
Instituto de Matematica-UFRJ

UFRJ, Agosto de 2014

1 / 18

Geraca o de variaveis uniformes no (0, 1)


Geraca o de numeros aleatorios

Conteudo

Geraca o de numeros aleatorios


Geradores de congruencia linear

2 / 18

Geraca o de variaveis uniformes no (0, 1)


Geraca o de numeros aleatorios

Motivaca o
Nesta seca o apresentam-se consideraco es para a construca o e
implementaca o de geradores de numeros aleatorios os quais sao
bons para o uso pratico.
Uma alternativa para produzir a mesma sequencia de numeros
aleatorios cada vez que um programa e executado e a utilizaca o
de um gerador de numeros pseudo-aleatorios.

3 / 18

Geraca o de variaveis uniformes no (0, 1)


Geraca o de numeros aleatorios

Motivaca o
Antes de discutir as sequencias que parecem ser aleatorias,
embora nao sejam, pode-se especificar que se entende por
gerador de numeros aleatorios: isto e um um mecanismo para
produzir uma sequencia de variaveis aleatorias U1 , U2 , . . . , com
a propriedade
(i) Os Ui U(0, 1)
(ii) Os Ui sao mutuamente independentes.

A propriedade (ii) e a mais importante. Isto implica que todos os


pares devem ser nao correlacionados, ou equivalentemente que
Ui nao pode ser determinado a partir de U1 , . . . , Ui1 .

4 / 18

Geraca o de variaveis uniformes no (0, 1)


Geraca o de numeros aleatorios

Motivaca o
Um gerador de numeros aleatorios (muitas vezes chamado de um
gerador de numeros pseudo-aleatorios para enfatizar que so imita
aleatoriedade) produz uma sequencia finita de numeros
u1 , u2 , . . . , uK no intervalo (0, 1).
Tipicamente, os valores gerados dependem em parte da entrada
de parametros especificados pelo usuario.
Qualquer seque ncia constitui um conjunto de possveis
resultados de variaveis aleatorias uniformes independentes
U1 , U2 , . . . , UK
Um bom gerador de numeros aleatorios e aquele que satisfaz a
exigencia de que os pequenos segmentos (em relaca o ao K) da
seque ncia u1 , . . . , uk e difcil de distinguir das realizaco es de
uma variavel aleatoria uniforme e independente.
5 / 18

Geraca o de variaveis uniformes no (0, 1)


Geraca o de numeros aleatorios

Motivaca o
We discuss the following general considerations in the construction of
a random number generator:
duraca o do perodo
reprodutibilidade
velocidade
portabilidade
aleatoriedade

6 / 18

Geraca o de variaveis uniformes no (0, 1)


Geraca o de numeros aleatorios
Geradores de congruencia linear

O Metodo
xi+1

ui+1 =

(axi + c) mod m

ui
m

a > 1 e chamado de multiplicador, c N o incremento, m N e


o modulo do gerador.
inicializando o algoritmo em x0 0, inteiro. A seque ncia
0 xi < m, assim ui [0, 1)
A ideia e que m seja grande o suficiente de modo que
m1
0 1
ao proximos que ui pode ser tratado como
m , m , . . . , m sejam t
uma variavel contnua. Na pratica, assume-se que x0 > 0 para
evitar problemas de divisao por zero, o calcular logaritmo de
zero, etc.
7 / 18

Geraca o de variaveis uniformes no (0, 1)


Geraca o de numeros aleatorios
Geradores de congruencia linear

O Metodo
Xi = (aXi1 + c)mod m

Assumindo que X0 = 3, a = 9, c = 3, m = 24

8 / 18

Geraca o de variaveis uniformes no (0, 1)


Geraca o de numeros aleatorios
Geradores de congruencia linear

O Metodo
No R teremos que
X0<-3;
m<-16
cc<-3
aa<-9
X<-array(0,dim=32)
#######################
X[1]<-(aa*X0+cc)%% m
for(j in 2:32){
X[j]<-(aa*X[j-1]+cc)%% m
}

9 / 18

Geraca o de variaveis uniformes no (0, 1)


Geraca o de numeros aleatorios
Geradores de congruencia linear

Xi

10

15

O Metodo

10

15

10

15

20

25

30

20

25

30

0.0

0.2

0.4

Xi

0.6

0.8

10 / 18

Geraca o de variaveis uniformes no (0, 1)


Geraca o de numeros aleatorios
Geradores de congruencia linear

O Metodo
O perodo de um gerador e o menor inteiro de modo que
X = X0 . Em nosso exemplo, = 16.
Claramente, queremos fazer perodo tao grande quanto
forpossvel, para evitar a possibilidade de reutilizaca o de
numeros aleatorios.
Ja que esse perodo nao pode exceder m, o modulo e
frequentemente escolhido como um valor proximo do maior
inteiro representavel no computador.

11 / 18

Geraca o de variaveis uniformes no (0, 1)


Geraca o de numeros aleatorios
Geradores de congruencia linear

O Metodo
c and m sao primos relativos (maior divisor comum entre c e m e
1)
a 1 e multiplo de q para cada fator primo q de m
a 1 e multiplo de 4 is a multiple of 4, si m e multiplo de 4.
Se c > 0 o metodo chama-se gerador de congruencia linear
misto.
Se c = 0 o metodo chams-se gerador de congruencia linear
multiplicativo.
Xi = aXi1 mod m

12 / 18

Geraca o de variaveis uniformes no (0, 1)


Geraca o de numeros aleatorios
Geradores de congruencia linear

O Metodo
Se c > 0, uma boa escolha e fazer m = 2b onde b e o numero de
bits usados para representar inteiros positivos com um
particular combinaca o de computador/linguagem
Por exemplo em computadores de 32 bits, um bit pode ser
reservado para o sinal do inteiro, deixando b = 31.
Estes computadores podem salvar inteiros no intervalo
[231 , 231 1]
Por exemplo: m = 231 , a = 906185749, c = 1, x0 = 3456.

13 / 18

Geraca o de variaveis uniformes no (0, 1)


Geraca o de numeros aleatorios
Geradores de congruencia linear

O Metodo
No R
proc1<-function(N,m=2(31),a=906185749,c=1,seedini)
{
X<-array(0,dim=N+1)
X[1]<-seedini;
for (j in 2:(N+1)){
X[j] <-(a*X[j-1]+c)%%(m)
}
return (X)
}
X<-proc1(N=1000,seedini=3456)

14 / 18

Geraca o de variaveis uniformes no (0, 1)


Geraca o de numeros aleatorios
Geradores de congruencia linear

Xi

0.0e+00 5.0e+08 1.0e+09 1.5e+09 2.0e+09

Xi

0.0e+00 5.0e+08 1.0e+09 1.5e+09 2.0e+09

O Metodo

200

400

600

800

1000

0.0e+00

5.0e+08

1.0e+09

Xi1

1.5e+09

2.0e+09

15 / 18

Geraca o de variaveis uniformes no (0, 1)


Geraca o de numeros aleatorios
Geradores de congruencia linear

0.0

0.2

0.4

Ui

0.6

0.8

1.0

O Metodo

0.0

0.2

0.4

Ui

0.6

0.8

1.0

200

400

600

800

1000

0.0

0.2

0.4

Ui1

0.6

0.8

1.0

16 / 18

Geraca o de variaveis uniformes no (0, 1)


Geraca o de numeros aleatorios
Geradores de congruencia linear

O Metodo
O perodo de um gerador de congruencia linear multiplicativo
com multiplicador a e modulo m depende do menor valor
positivo menor k de modo que
ak = 1 mod m
Isto porque, quando essa relaca o e satisfeita, a seque ncia comeca
a repetir.
O perodo nao pode ser maior que k.

17 / 18

Geraca o de variaveis uniformes no (0, 1)


Geraca o de numeros aleatorios
Geradores de congruencia linear

O Metodo
Por exemplo m = 31 e a = 7, isto e
xi = 7xi1 mod 31
Assumindo x0 = 19, temos a seque ncia
9, 1, 7, 18, 2, 14, 5, 4, 28, 10, 8, 25, 20, 16, 19
O perodo e 15. Assim, neste temos
715 = 1 mod 31
No R
> (7(15))%%(31)
[1] 1
7 nao e uma raz primitiva modulo 31.
18 / 18

S-ar putea să vă placă și