Geração de Números Aleatórios
Geração de Números Aleatórios
Geração de Números Aleatórios
Construc
ao do Gerador de N
umeros Aleat
orios MLCG
Modulo 264
Alunos
Professor
Conte
udo
1 Introdu
c
ao
2
2
2
3
3 Do RAND
3.1 A func
ao rand . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 O c
odigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
4
4
4 Do Teste Qui-Quadrado
4.1 Um pouco sobre . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Par
ametros Ultilizados . . . . . . . . . . . . . . . . . . . . . . . .
5
5
5
5 Resultados
6 An
alise dos Resultados
6.1 MLCG Modulo 264 x RAND . . . . . . . . . . . . . . . . . . . .
9
9
2 Do
2.1
2.2
2.3
7 Considera
c
oes Finais
10
8 Refer
encias
11
Introdu
c
ao
O relat
orio a seguir tem como tema central a construcao e analise do gerador
sugerido durante uma aula do curso de Introducao a Metodos Probabilsticos.
O prop
osito deste trabalho consiste em explanar de forma clara e concisa as
dificuldades e d
uvidas encontradas durante o processo de construcao e, ainda,
os resultados obtidos a partir dos dados coletados do algoritmo.
S
ao destaques deste documento: Construcao e finalizacao do programa,
Teste do Qui-Quadrado e comparacao entre o Gerador construdo e o Gerador
do Compilador, no que diz respeito ao tempo e a uniformidade dos n
umeros.
A definic
ao do gerador a ser construdo aconteceu em sala de aula. Das 7
(sete) possibilidades apresentadas no livro Numerical Recipes, a escolhida para
este relat
orio foi a 5a (quinta): o gerador (D) MLCG MODULO 264 .
2.1
Caractersticas
m)
(1)
m)
(2)
2.2
O processo de programac
ao
Por fim, foi preciso alterar o programa mais vezes, para que esse finalmente
se adequasse as condic
oes especificadas e passasse em todos os testes do QuiQuadrado. Ou seja, o algoritmo finalmente estava gerando n
umeros aleatorios.
Os resultados apresentados neste relatorio provem da u
ltima versao do gerador,
alterado no segundo dia de apresentacao.
2.3
O algoritmo final
Do RAND
3.1
A func
ao rand
A func
ao rand (o nome e uma abreviatura de random), definida na biblioteca
stdlib, gera n
umeros aleat
orios. Cada invocacao da funcao produz um n
umero
aleat
orio em um intervalo fechado. O rand geraria a mesma sequencia, toda vez
que compil
assemos o programa, se nao trocassemos o valor da semente usada na
func
ao. Por isso e importante especificar a semente por meio da funcao srand,
que recebe um unsigned int como argumento e esta na biblioteca stdlib.
3.2
O c
odigo
O c
odigo para o gerador rand, em si, e bem simples. O rand gera n
umeros a
partir do tempo, h
a um vetor que conta a ocorrencia, mecanismos para indicar
o tempo de execuc
ao e o valor do Qui-Quadrado, bem como um ponteiro para
guardar esses dados em arquivo .txt.
Do Teste Qui-Quadrado
Ap
os a finalizac
ao do algoritmo para geracao de n
umeros aleatorios, deveriam ser feitos testes, em evolucao, para atestar a aleatoriedade dos mesmos.
A hip
otese partiu da ideia de que os n
umeros eram aleatorios e cabia ao exame
indicar se a hip
otese era verdadeira ou nao.
4.1
Um pouco sobre
n
X
(Ok Ek )2
k=1
Ek
(3)
Onde Ok e Ek s
ao as frequencias observada e esperada, respectivamente.
Depois de calculado o valor do 2 observado , e preciso fazer uma comparacao
com um 2 crtico. Essa comparacao indicara se a hipotese podera ser aceita
ou n
ao. A escolha do 2 crtico e apresentada na proxima secao.
4.2
Par
ametros Ultilizados
Figura 1: Valor de
Resultados
A seguir s
ao mostrados os resultados de 20 tentativas em cada gerador, para
amostras de diferentes quantidades.
Apresentamos os resultados do MLCG Modulo 264 nas primeiras colunas, e
do RAND nas restantes.
MLCG Modulo 264 RAND
Tentativa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
8,99
15,41
10,22
16,07
7,23
16,63
3,07
7,01
5,40
4,12
4,53
7,40
7,47
7,71
13,32
7,47
10,75
4,83
12,16
8,14
T
4
9
10
0
10
0
0
10
9
0
9
0
10
0
0
0
0
10
0
0
2
6,42
7,21
2,57
9,46
9,18
5,63
13,03
4,71
10,87
5,44
5,14
7,32
6,83
7,02
11,18
7,47
16,65
13,39
4,36
17,98
T
2
0
0
9
0
0
10
0
0
10
0
10
0
0
0
0
0
0
0
0
Tentativa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3,38
4,92
9,90
7,78
7,95
8,29
13,36
12,29
5,56
11,81
7,46
7,70
6,93
8,65
12,32
7,76
7,10
6,27
4,07
4,50
T
40
40
40
40
50
50
40
50
40
40
40
40
40
50
40
50
50
40
40
41
2
7,26
11,31
14,52
2,26
10,06
13,45
13,70
9,30
4,77
10,40
6,08
11,50
6,21
1,83
10,97
8,29
3,61
9,35
5,98
1,86
T
30
20
20
30
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
Tentativa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3,38
4,92
9,90
7,78
7,95
8,29
13,36
12,29
5,56
11,81
7,46
7,70
6,93
8,65
12,32
7,76
7,10
6,27
4,07
4,50
T
40
40
40
40
50
50
40
50
40
40
40
40
40
50
40
50
50
40
40
41
2
7,26
11,31
14,52
2,26
10,06
13,45
13,70
9,30
4,77
10,40
6,08
11,50
6,21
1,83
10,97
8,29
3,61
9,35
5,98
1,86
T
30
20
20
30
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
An
alise dos Resultados
Como parte da tarefa, ainda foi proposta uma comparacao entre o gerador de
n
umero aleat
orios da Linguagem C (rand) e, o gerador arquitetado pelos alunos.
A comparac
ao ser
a feita, principalmente, com base no tempo de execucao de
cada um dos algoritmos. Portanto, nessa secao serao analisados os resultados
tanto para o MLCG Modulo 264 quanto para o RAND.
6.1
Media 2
8,90
7,90
7,93
Media T
4,05
43,05
410,40
Media 2
8,59
8,14
8,87
Media T
2,05
21,00
209,50
Considera
co
es Finais
10
Refer
encias
11