Escolar Documentos
Profissional Documentos
Cultura Documentos
Thiago VedoVatto
18 de junho de 2013
Resumo
Neste trabalho implementa-se e estudam-se os geradores Congruencial e Fibonacci. Esses geradores s
ao usados para a construcao via Metodo de Monte Carlo da
tabela de distribuic
ao normal.
1
1.1
Introduc
ao
Gerador Congruencial
(1)
O gerador deixa em aberto todos os parametros da equacao, mas atribui como valores
padrao:
a = 950706376
c = 0
m = 231 1
Para os efeitos desse trabalho o gerador congruencial foi ajustado conforme os valores
padroes dos parametros. O valor de x0 que corresponde a` semente do gerador sera tambem
um parametro da funcao e sera deixado a cargo do usuario o controle sobre o valor que a
semente deve assumir.
Para se gerar 10 valores pseudo-aleatorios atraves do gerador congruencial a partir da
semente x0 = 10 basta:
> s <- 10
> GeradorCongruencial(n=10,semente=s)
$sequencia.gerada
[1] 917129172 1290271678 1892380375 418010204
[7] 292177807 1550646805 1322288131 1514884016
468394860 2011906907
$sequencia.uniforme
[1] 0.4270716 0.6008296 0.8812083 0.1946512 0.2181134 0.9368672 0.1360559
[8] 0.7220762 0.6157384 0.7054228
1
1.2
Gerador Fibonacci
Para efeito de uma aprendizagem mais rica implementou-se tambem um modelo elementar
de gerador Fibonacci regido pela expressao de recorrencia:
xn = m(xni xnj )mod(m)
(2)
Sao deixados em aberto todos os parametros envolvidos para que o usuario possa
ajusta-los livremente. Nesse trabalho usou-se os valores padrao recomendados no proprio
algortmo:
i = 607
j = 273
m = 231
Nesse algortmo o usuario fornece uma semente x0 6= 0 e a partir dessa semente e
gerada uma sequencia de i valores pseudo-aleatorios atraves do gerador congruencial em
(1) ajustado com os valores padrao, essa sequencia e usada pelo gerador Fibonacci em (2)
para gerar os n valores requisitados pelo usuario.
Para se gerar 10 valores pseudo-aleatorios atraves do gerador Fibonacci a partir da
semente x0 = 10 basta:
> GeradorFibonacci(n=10,semente=s)
$sequencia.gerada
[1] 1851247587 418515232 1561740616 1460556881
[7] 1982208495 441658451 796130156 981068708
462303229
659066427
$sequencia.uniforme
[1] 0.8620543 0.1948863 0.7272421 0.6801248 0.2152767 0.3069017 0.9230378
[8] 0.2056632 0.3707270 0.4568457
1.3
(3)
A funcao retorna o valor da densidade para um dado valor de x informado pelo usuario.
1.4
M
etodo de Monte Carlo
x
:
x0
(4)
z0
Z
fX (x)dx =
x0 fX (x0 y)dy
(5)
O Metodo de Monte Carlo garante que a expressao do lado direito de (5) sera equivalente a` E(h(U )) onde h(y) = x0 fX (x0 y).
Resultados
2.1
Para os testes das subsequencias das sequencias geradas criemos os vetores dos ndides
pares e mpares:
>
>
2.1.1
Gerador Congruencial
Os comandos a seguir criam uma sequencia SC de 10000 valores de uma distribuicao uniforme no intervalo (0, 1) atraves do algortmo congruencial e a partir dessa sequencia sao
criadas as sequencias sub1SC e sub2SC com os ndices pares e mpares, respectivamente,
da sequencia SC.
>
>
>
Congruencial
0.0
0.2
0.4
0.6
0.8
1.0
0.8
1.0
0.8
1.0
Congruencial Pares
0.0
0.2
0.4
0.6
Congruencial Impares
0.0
0.2
0.4
0.6
data: SR and SC
W = 49735025, p-value = 0.5163
alternative hypothesis: true location shift is not equal to 0
>
wilcox.test(SR,sub1SC)
Wilcoxon rank sum test with continuity correction
wilcox.test(SR,sub2SC)
Wilcoxon rank sum test with continuity correction
0.8
0.4
0.0
0.4
0.8
sequncia Gerada
Congruencial Pares
0.0
sequncia Gerada
Congruencial
2000
6000
10000
ndices
1000
3000
5000
ndices
0.8
0.4
0.0
sequncia Gerada
Congruencial Impares
1000
3000
5000
ndices
Gerador Fibonacci
Fibonacci
0.0
0.2
0.4
0.6
0.8
1.0
0.8
1.0
0.8
1.0
Fibonacci Pares
0.0
0.2
0.4
0.6
Fibonacci Impares
0.0
0.2
0.4
0.6
2.2
2.2.1
A matriz a` seguir relaciona as probabilidades da tabela normal calculadas atraves do metodo de monte carlo e utilizando-se o Gerador Congruencial implementado, os resultados
foram arredondados ate a quarta casa decimal:
6
0.8
0.0
0.4
0.4
0.8
sequncia Gerada
Fibonacci Pares
0.0
sequncia Gerada
Fibonacci
2000
6000
10000
1000
ndices
3000
5000
ndices
0.8
0.4
0.0
sequncia Gerada
Fibonacci Impares
1000
3000
5000
ndices
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
1.1
1.2
1.3
1.4
1.5
1.6
0
0.0000
0.0398
0.0793
0.1179
0.1554
0.1914
0.2256
0.2578
0.2879
0.3156
0.3408
0.3637
0.3841
0.4022
0.4180
0.4318
0.4436
1
0.0040
0.0438
0.0832
0.1217
0.1591
0.1949
0.2289
0.2610
0.2907
0.3182
0.3432
0.3658
0.3860
0.4039
0.4195
0.4330
0.4446
2
0.0080
0.0478
0.0871
0.1255
0.1627
0.1984
0.2322
0.2640
0.2936
0.3208
0.3456
0.3680
0.3879
0.4055
0.4210
0.4343
0.4457
3
0.0120
0.0517
0.0909
0.1293
0.1664
0.2019
0.2355
0.2671
0.2964
0.3234
0.3479
0.3701
0.3898
0.4072
0.4224
0.4355
0.4467
4
0.0160
0.0557
0.0948
0.1330
0.1700
0.2053
0.2388
0.2701
0.2992
0.3260
0.3503
0.3721
0.3916
0.4088
0.4238
0.4367
0.4478
7
5
0.0199
0.0596
0.0987
0.1368
0.1736
0.2087
0.2420
0.2731
0.3020
0.3285
0.3526
0.3742
0.3934
0.4104
0.4252
0.4379
0.4488
6
0.0239
0.0636
0.1026
0.1405
0.1772
0.2122
0.2452
0.2761
0.3048
0.3310
0.3548
0.3762
0.3952
0.4120
0.4265
0.4391
0.4498
7
0.0279
0.0675
0.1064
0.1443
0.1808
0.2156
0.2484
0.2791
0.3075
0.3335
0.3571
0.3782
0.3970
0.4135
0.4279
0.4402
0.4507
8
0.0319
0.0714
0.1102
0.1480
0.1843
0.2189
0.2516
0.2820
0.3102
0.3360
0.3593
0.3802
0.3988
0.4150
0.4292
0.4414
0.4517
9
0.0359
0.0753
0.1141
0.1517
0.1879
0.2223
0.2547
0.2850
0.3129
0.3384
0.3615
0.3822
0.4005
0.4166
0.4305
0.4425
0.4526
1.7
1.8
1.9
2
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
3
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
0.4536
0.4620
0.4689
0.4747
0.4793
0.4830
0.4860
0.4883
0.4900
0.4914
0.4924
0.4931
0.4936
0.4940
0.4942
0.4944
0.4944
0.4945
0.4945
0.4945
0.4945
0.4944
0.4944
0.4545
0.4627
0.4696
0.4752
0.4797
0.4833
0.4862
0.4885
0.4902
0.4915
0.4925
0.4932
0.4937
0.4940
0.4942
0.4944
0.4944
0.4945
0.4945
0.4945
0.4944
0.4944
0.4944
0.4554
0.4635
0.4702
0.4757
0.4801
0.4837
0.4865
0.4887
0.4903
0.4916
0.4925
0.4932
0.4937
0.4940
0.4942
0.4944
0.4945
0.4945
0.4945
0.4945
0.4944
0.4944
0.4944
0.4562
0.4642
0.4708
0.4762
0.4805
0.4840
0.4867
0.4888
0.4905
0.4917
0.4926
0.4933
0.4937
0.4941
0.4943
0.4944
0.4945
0.4945
0.4945
0.4945
0.4944
0.4944
0.4944
0.4571
0.4649
0.4714
0.4766
0.4809
0.4843
0.4870
0.4890
0.4906
0.4918
0.4927
0.4933
0.4938
0.4941
0.4943
0.4944
0.4945
0.4945
0.4945
0.4945
0.4944
0.4944
0.4944
0.4580
0.4656
0.4719
0.4771
0.4813
0.4846
0.4872
0.4892
0.4908
0.4919
0.4928
0.4934
0.4938
0.4941
0.4943
0.4944
0.4945
0.4945
0.4945
0.4945
0.4944
0.4944
0.4944
0.4588
0.4663
0.4725
0.4776
0.4816
0.4849
0.4874
0.4894
0.4909
0.4920
0.4928
0.4934
0.4938
0.4941
0.4943
0.4944
0.4945
0.4945
0.4945
0.4945
0.4944
0.4944
0.4944
0.4596
0.4670
0.4731
0.4780
0.4820
0.4852
0.4876
0.4896
0.4910
0.4921
0.4929
0.4935
0.4939
0.4942
0.4943
0.4944
0.4945
0.4945
0.4945
0.4945
0.4944
0.4944
0.4944
0.4604
0.4676
0.4736
0.4784
0.4823
0.4854
0.4878
0.4897
0.4911
0.4922
0.4930
0.4935
0.4939
0.4942
0.4943
0.4944
0.4945
0.4945
0.4945
0.4945
0.4944
0.4944
0.4944
0.4612
0.4683
0.4741
0.4789
0.4827
0.4857
0.4881
0.4899
0.4913
0.4923
0.4930
0.4936
0.4939
0.4942
0.4943
0.4944
0.4945
0.4945
0.4945
0.4945
0.4944
0.4944
0.4944
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
0
0.0000
0.0000
0.0000
0.0000
0.0000
0.0001
0.0001
0.0002
0.0003
0.0004
0.0005
0.0007
0.0008
0.0010
0.0012
0.0014
0.0016
0.0019
0.0021
1
0.0000
0.0000
0.0000
0.0000
0.0000
0.0001
0.0001
0.0002
0.0003
0.0004
0.0005
0.0007
0.0008
0.0010
0.0012
0.0014
0.0017
0.0019
0.0021
2
0.0000
0.0000
0.0000
0.0000
0.0000
0.0001
0.0001
0.0002
0.0003
0.0004
0.0005
0.0007
0.0009
0.0010
0.0012
0.0015
0.0017
0.0019
0.0022
3
0.0000
0.0000
0.0000
0.0000
0.0000
0.0001
0.0001
0.0002
0.0003
0.0004
0.0006
0.0007
0.0009
0.0011
0.0013
0.0015
0.0017
0.0019
0.0022
4
0.0000
0.0000
0.0000
0.0000
0.0000
0.0001
0.0001
0.0002
0.0003
0.0004
0.0006
0.0007
0.0009
0.0011
0.0013
0.0015
0.0017
0.0020
0.0022
8
5
0.0000
0.0000
0.0000
0.0000
0.0001
0.0001
0.0002
0.0002
0.0003
0.0004
0.0006
0.0007
0.0009
0.0011
0.0013
0.0015
0.0018
0.0020
0.0022
6
0.0000
0.0000
0.0000
0.0000
0.0001
0.0001
0.0002
0.0002
0.0003
0.0005
0.0006
0.0008
0.0009
0.0011
0.0013
0.0015
0.0018
0.0020
0.0023
7
0.0000
0.0000
0.0000
0.0000
0.0001
0.0001
0.0002
0.0002
0.0003
0.0005
0.0006
0.0008
0.0009
0.0011
0.0013
0.0016
0.0018
0.0020
0.0023
8
0.0000
0.0000
0.0000
0.0000
0.0001
0.0001
0.0002
0.0003
0.0004
0.0005
0.0006
0.0008
0.0010
0.0012
0.0014
0.0016
0.0018
0.0021
0.0023
9
0.0000
0.0000
0.0000
0.0000
0.0001
0.0001
0.0002
0.0003
0.0004
0.0005
0.0006
0.0008
0.0010
0.0012
0.0014
0.0016
0.0018
0.0021
0.0023
1.9
2
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
3
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
0.0024
0.0026
0.0028
0.0031
0.0033
0.0035
0.0038
0.0040
0.0042
0.0043
0.0045
0.0047
0.0048
0.0050
0.0051
0.0052
0.0053
0.0054
0.0054
0.0055
0.0056
2.2.2
0.0024
0.0026
0.0029
0.0031
0.0033
0.0036
0.0038
0.0040
0.0042
0.0044
0.0045
0.0047
0.0048
0.0050
0.0051
0.0052
0.0053
0.0054
0.0054
0.0055
0.0056
0.0024
0.0026
0.0029
0.0031
0.0034
0.0036
0.0038
0.0040
0.0042
0.0044
0.0045
0.0047
0.0048
0.0050
0.0051
0.0052
0.0053
0.0054
0.0055
0.0055
0.0056
0.0024
0.0027
0.0029
0.0032
0.0034
0.0036
0.0038
0.0040
0.0042
0.0044
0.0046
0.0047
0.0049
0.0050
0.0051
0.0052
0.0053
0.0054
0.0055
0.0055
0.0056
0.0025
0.0027
0.0029
0.0032
0.0034
0.0036
0.0038
0.0040
0.0042
0.0044
0.0046
0.0047
0.0049
0.0050
0.0051
0.0052
0.0053
0.0054
0.0055
0.0055
0.0056
0.0025
0.0027
0.0030
0.0032
0.0034
0.0037
0.0039
0.0041
0.0043
0.0044
0.0046
0.0047
0.0049
0.0050
0.0051
0.0052
0.0053
0.0054
0.0055
0.0055
0.0056
0.0025
0.0027
0.0030
0.0032
0.0035
0.0037
0.0039
0.0041
0.0043
0.0044
0.0046
0.0048
0.0049
0.0050
0.0051
0.0052
0.0053
0.0054
0.0055
0.0055
0.0056
0.0025
0.0028
0.0030
0.0032
0.0035
0.0037
0.0039
0.0041
0.0043
0.0045
0.0046
0.0048
0.0049
0.0050
0.0052
0.0053
0.0053
0.0054
0.0055
0.0055
0.0056
0.0025
0.0028
0.0030
0.0033
0.0035
0.0037
0.0039
0.0041
0.0043
0.0045
0.0046
0.0048
0.0049
0.0051
0.0052
0.0053
0.0053
0.0054
0.0055
0.0056
0.0056
0.0026
0.0028
0.0031
0.0033
0.0035
0.0037
0.0039
0.0041
0.0043
0.0045
0.0047
0.0048
0.0049
0.0051
0.0052
0.0053
0.0054
0.0054
0.0055
0.0056
0.0056
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
0
0.0000
0.0398
0.0793
0.1179
0.1554
0.1915
0.2257
0.2580
0.2881
0.3159
0.3413
0.3643
0.3849
0.4032
0.4193
0.4332
0.4453
0.4555
0.4642
0.4714
1
0.0040
0.0438
0.0832
0.1217
0.1591
0.1950
0.2291
0.2611
0.2910
0.3186
0.3437
0.3665
0.3869
0.4049
0.4207
0.4345
0.4464
0.4565
0.4650
0.4721
2
0.0080
0.0478
0.0871
0.1255
0.1628
0.1985
0.2324
0.2642
0.2939
0.3212
0.3461
0.3686
0.3888
0.4066
0.4222
0.4358
0.4474
0.4574
0.4657
0.4727
3
0.0120
0.0517
0.0910
0.1293
0.1664
0.2019
0.2356
0.2673
0.2967
0.3238
0.3485
0.3707
0.3906
0.4082
0.4237
0.4370
0.4485
0.4583
0.4665
0.4734
4
0.0160
0.0557
0.0948
0.1331
0.1700
0.2054
0.2389
0.2703
0.2995
0.3264
0.3508
0.3728
0.3925
0.4099
0.4251
0.4383
0.4496
0.4592
0.4672
0.4740
9
5
0.0199
0.0596
0.0987
0.1368
0.1736
0.2088
0.2421
0.2734
0.3023
0.3289
0.3531
0.3749
0.3943
0.4115
0.4265
0.4395
0.4506
0.4600
0.4680
0.4746
6
0.0239
0.0636
0.1026
0.1406
0.1772
0.2123
0.2454
0.2764
0.3051
0.3315
0.3554
0.3770
0.3962
0.4131
0.4279
0.4407
0.4516
0.4609
0.4687
0.4752
7
0.0279
0.0675
0.1064
0.1443
0.1808
0.2157
0.2486
0.2793
0.3078
0.3340
0.3577
0.3790
0.3980
0.4147
0.4292
0.4418
0.4526
0.4617
0.4694
0.4758
8
0.0319
0.0714
0.1103
0.1480
0.1844
0.2190
0.2517
0.2823
0.3106
0.3364
0.3599
0.3810
0.3997
0.4162
0.4306
0.4430
0.4536
0.4626
0.4701
0.4763
9
0.0359
0.0753
0.1141
0.1517
0.1879
0.2224
0.2549
0.2852
0.3133
0.3389
0.3621
0.3830
0.4015
0.4177
0.4319
0.4441
0.4546
0.4634
0.4708
0.4769
2
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
3
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
0.4775
0.4824
0.4864
0.4896
0.4922
0.4943
0.4959
0.4971
0.4981
0.4988
0.4993
0.4998
0.5001
0.5003
0.5004
0.5005
0.5006
0.5007
0.5007
0.5007
0.4780
0.4828
0.4868
0.4899
0.4924
0.4944
0.4960
0.4972
0.4981
0.4989
0.4994
0.4998
0.5001
0.5003
0.5005
0.5006
0.5006
0.5007
0.5007
0.5007
0.4785
0.4833
0.4871
0.4902
0.4927
0.4946
0.4961
0.4973
0.4982
0.4989
0.4994
0.4998
0.5001
0.5003
0.5005
0.5006
0.5006
0.5007
0.5007
0.5007
0.4790
0.4837
0.4874
0.4905
0.4929
0.4948
0.4963
0.4974
0.4983
0.4990
0.4995
0.4999
0.5001
0.5003
0.5005
0.5006
0.5006
0.5007
0.5007
0.5007
0.4795
0.4841
0.4878
0.4907
0.4931
0.4949
0.4964
0.4975
0.4984
0.4990
0.4995
0.4999
0.5002
0.5004
0.5005
0.5006
0.5006
0.5007
0.5007
0.5007
0.4800
0.4845
0.4881
0.4910
0.4933
0.4951
0.4965
0.4976
0.4985
0.4991
0.4996
0.4999
0.5002
0.5004
0.5005
0.5006
0.5006
0.5007
0.5007
0.5007
0.4805
0.4849
0.4884
0.4913
0.4935
0.4953
0.4966
0.4977
0.4985
0.4991
0.4996
0.5000
0.5002
0.5004
0.5005
0.5006
0.5006
0.5007
0.5007
0.5007
0.4810
0.4853
0.4887
0.4915
0.4937
0.4954
0.4968
0.4978
0.4986
0.4992
0.4996
0.5000
0.5002
0.5004
0.5005
0.5006
0.5006
0.5007
0.5007
0.5007
0.4815
0.4857
0.4890
0.4917
0.4939
0.4956
0.4969
0.4979
0.4987
0.4992
0.4997
0.5000
0.5002
0.5004
0.5005
0.5006
0.5007
0.5007
0.5007
0.5007
0.4819
0.4860
0.4893
0.4920
0.4941
0.4957
0.4970
0.4980
0.4987
0.4993
0.4997
0.5000
0.5003
0.5004
0.5005
0.5006
0.5007
0.5007
0.5007
0.5007
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
2
2.1
2.2
0
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
-1e-04
-1e-04
-1e-04
-2e-04
-2e-04
-3e-04
-3e-04
1
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
-1e-04
-1e-04
-1e-04
-2e-04
-2e-04
-3e-04
-3e-04
2
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
-1e-04
-1e-04
-1e-04
-2e-04
-2e-04
-3e-04
-3e-04
3
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
-1e-04
-1e-04
-1e-04
-2e-04
-2e-04
-3e-04
-3e-04
4
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
-1e-04
-1e-04
-1e-04
-2e-04
-2e-04
-3e-04
-3e-04
10
5
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
-1e-04
-1e-04
-1e-04
-2e-04
-2e-04
-3e-04
-3e-04
6
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
-1e-04
-1e-04
-1e-04
-2e-04
-2e-04
-3e-04
-3e-04
7
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
-1e-04
-1e-04
-1e-04
-2e-04
-2e-04
-3e-04
-3e-04
8
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
-1e-04
-1e-04
-1e-04
-2e-04
-2e-04
-3e-04
-3e-04
9
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
0e+00
-1e-04
-1e-04
-1e-04
-2e-04
-2e-04
-2e-04
-3e-04
-4e-04
2.3
2.4
2.5
2.6
2.7
2.8
2.9
3
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
-4e-04
-4e-04
-5e-04
-5e-04
-6e-04
-6e-04
-7e-04
-7e-04
-7e-04
-7e-04
-8e-04
-8e-04
-8e-04
-8e-04
-8e-04
-7e-04
-7e-04
-4e-04
-4e-04
-5e-04
-5e-04
-6e-04
-6e-04
-7e-04
-7e-04
-7e-04
-8e-04
-8e-04
-8e-04
-8e-04
-8e-04
-8e-04
-7e-04
-7e-04
-4e-04
-4e-04
-5e-04
-5e-04
-6e-04
-6e-04
-7e-04
-7e-04
-7e-04
-8e-04
-8e-04
-8e-04
-8e-04
-8e-04
-8e-04
-7e-04
-7e-04
-4e-04
-4e-04
-5e-04
-5e-04
-6e-04
-6e-04
-7e-04
-7e-04
-7e-04
-8e-04
-8e-04
-8e-04
-8e-04
-8e-04
-8e-04
-7e-04
-7e-04
-4e-04
-4e-04
-5e-04
-5e-04
-6e-04
-6e-04
-7e-04
-7e-04
-7e-04
-8e-04
-8e-04
-8e-04
-8e-04
-8e-04
-8e-04
-7e-04
-7e-04
-4e-04
-4e-04
-5e-04
-5e-04
-6e-04
-6e-04
-7e-04
-7e-04
-7e-04
-8e-04
-8e-04
-8e-04
-8e-04
-8e-04
-8e-04
-7e-04
-7e-04
-4e-04
-4e-04
-5e-04
-5e-04
-6e-04
-6e-04
-7e-04
-7e-04
-7e-04
-8e-04
-8e-04
-8e-04
-8e-04
-8e-04
-8e-04
-7e-04
-7e-04
-4e-04
-4e-04
-5e-04
-6e-04
-6e-04
-6e-04
-7e-04
-7e-04
-7e-04
-8e-04
-8e-04
-8e-04
-8e-04
-8e-04
-8e-04
-7e-04
-7e-04
-4e-04
-5e-04
-5e-04
-6e-04
-6e-04
-6e-04
-7e-04
-7e-04
-7e-04
-8e-04
-8e-04
-8e-04
-8e-04
-8e-04
-8e-04
-7e-04
-7e-04
-4e-04
-5e-04
-5e-04
-6e-04
-6e-04
-7e-04
-7e-04
-7e-04
-7e-04
-8e-04
-8e-04
-8e-04
-8e-04
-8e-04
-8e-04
-7e-04
-7e-04
Conclus
ao
Os resultados obtidos nos mostram que as sequencia geradas apresentam todas as boas
caractersticas desejadas em uma distribuicao uniforme:
Uniformidade: Os testes de Wilcoxon e os graficos gerados para as sequencias Congruencial e Fibonacci garantem que em todas as sequencias geradas as distribuicoes
sao estatisticamente uniformes. Cabe aqui notar que para algumas poucas sementes
as sequencias geradas por ambos os geradores sao rejeitadas pelo teste de Wilcoxon apenas de que nos graficos de boxplot e qqplot sua aparencia seja claramente
uniforme;
Independ
encia: Conforme visto nos testes para as sequencias dos ndices pares e mpares da sequencia gerada pode-se afirmar que os diferentes valores gerados sao
independentes;
Perodo Longo: O perodo do gerador congruencial para os parametros padroes sera de
231 2 a sequencia Fibonacci apresenta periodo superior `a 2100 ;
Facilidade de implementac
ao e efici
encia: Como se pode ver nos algortmos em anexo
nao sao necessarias grandes habilidades de programacao para se projetar qualquer
um dos dois algortmos usados no texto. Alem disso qualquer um dos dois algortmos usa poucas operacoes aritmeticas para se obter qualquer um dos valores da
sequencia;
Reprodutibilidade: Para o leitor obter os mesmos resultados desse texto basta executar
os algortmos usando a semente s = 10, para uma mesma semente as sequencias
geradas sempre serao iguais o que permite repetir as simulacoes feitas.
Com relacao a` tabela normal obtida observou-se que o erro obtido aumenta a` medida
em que z0 assume valores cada vez mais positivos, esse erro pode ser tanto a maior quanto a
11
Anexos
Em ambos os geradores a seguir a sada e um data frame formado pela sequencia de
inteiros gerada e pela sequencia de valores correspondente `a distribuicao uniforme no
intervalo (0, 1).
Gerador Congruencial
> GeradorCongruencial <- function(
+
a = 950706376,
+
c = 0,
+
m = 2^31-1,
+
semente = 1,
+
n = 1
+
){
+
#PARAMETROS
+
# a, c e m: coeficientes da express~
ao congruencial;
+
# n: n
umero de n
umeros a serem gerados;
+
# semente: valor do x0 que ser
a usado pelo algoritmo para iniciar o
+
# processo iterativo
+
# Outros valores adequados para a ser~
ao:
+
# a = 16807;
+
# a = 950706376;
+
# a = 742938285;
+
# a = 1226874159;
+
# a = 62089911;
+
# a = 1343714438;
+
# Para qualquer um dos valores de a sequ\^encia obtida ter
a tamanho 2^31-2
+
# e ser
a pr
oximo de uma normal;
+
# O valor a seguir
e um dos valores mais adequados se o computador for de
+
#32 bits equivale a
` 2^31-1;
+
u <- as.vector(n);
+
x <- semente; #Provavelmente h
a maneiras
+
# mais inteligentes de se gerar essa semente!!!
+
for(i in 1:n){
+
x[i+1] <- (a*x[i] + c) %% m;
+
u[i] <- x[i+1]/m;
+
}
+
return(
+
list(
+
#semente = x[1], #Semente para gera
c~
ao da sequ\^encia uniforme;
12
+
+
+
+
+
)
+
)
+ }
Gerador Fibonacci
O codigo a seguir pressupoe que o codigo anterior do Gerador Congruencial ja esta carregado na memoria do R, pois a semente usada nesse gerador e uma sequencia de tamanho fixo do gerador escolhido. Varios parametros desse gerador estao em aberto, mas
recomenda-se utilizar os valores padroes para i, j e m.
> GeradorFibonacci <- function(
+
i = 607,
+
j = 273,
+
m = 2^31,
+
semente = 1,
+
n = 1
+
){
+
#PARAMETROS
+
# i: Indice de um valor qualquer do vetor semente;
+
# j: Indice de um valor qualquer do vetor semente (necessariamente j<i);
+
# m: Parametro da expressao congruencial modulo m, geralmente deve ser
+
# pot^
encia de 2;
+
# semente: semente para o gerador congruencial;
+
# n: n
umero de n
umeros a serem gerados;
+
# No gerador Fibonacci se utilizam valores de m iguais a pot^
encias de 2.
+
if(j>=i){
+
erro <- "E necess
ario informar j<i";
+
return(erro);
+
}
+
x <- as.vector(0);
+
u <- GeradorCongruencial(semente = semente, n = i)$sequencia.uniforme;
+
for(k in (i+1):(i+n)){
+
x[k] <- (m*(u[k-i]-u[k-j])) %% m;
+
u[k] <- x[k]/m;
+
}
+
return(
+
list(
+
#semente = u[1:i], #Semente para gera
c~
ao da sequ\^encia uniforme;
+
sequencia.gerada = x[(i+1):(i+n)], #sequ\^encia gerada pela express~
ao
+
#do algor
tmo interativo;
+
sequencia.uniforme = u[(i+1):(i+n)] #sequ\^encia normal correspondente
+
#`
a sequ\^encia gerada;
+
)
13
+
)
+ }
Constru
c
ao da Tabela Normal
A funcao que constroi a matrix com os valores da tabela normal padrao usado nesse
trabalho e a seguinte:
> Tabela <- function(n = 10000, semente = 1, r = 4, Fibonacci = FALSE){
+
#Verifica qual gerador o usu
ario deseja usar.
+
if(Fibonacci){
+
pontos <- GeradorFibonacci(
+
n = n,
14
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
semente = semente
)$sequencia.uniforme
}else{
pontos <- GeradorCongruencial(
n = n,
semente = semente
)$sequencia.uniforme
}
#Gera a parte inteira da tabela normal
inteiros <- seq(from = 0, to = 3.9 , by = 0.1);
#Geram os cent
esimos da tabela normal
centesimos <- seq(from = 0, to = 9);
#Constr
oi os
ndices das margens da tabela normal
margens <- expand.grid(
inteiros = inteiros,
centesimos = centesimos
);
#Constr
oi todos os valores que devem ser usados paza z0
intervalo <- sort(margens$centesimos/100 + margens$inteiros);
#Calcula todas as probabilidades da normal
ResultadoPrevio <- ProbabilidadeNormalPadrao(
z0 = intervalo,
pontos = pontos);
#Calculas os valores das probabilidades
normal.calculada <- matrix(
ncol = 10,
round(
ResultadoPrevio$Probabilidade.Calculada,
digits=r
),
byrow = TRUE
)
normal.R <- matrix(
ncol = 10,
round(
ResultadoPrevio$Tabela,
digits=r
),
byrow=TRUE
)
normal.Erro <- matrix(
ncol = 10,
round(
ResultadoPrevio$Erro,
digits=r
),
byrow=TRUE)
#Monta uma tabela da normal com layout desconfigurado
15
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ }
16