1 Implementar um Gerador Linear Congruente (GLC)

  • DESCRIÇÃO: O GLC é um método clássico para gerar números pseudo-aleatórios baseado na fórmula: \[X_{n+1}=(a.X_n + c)\ mod\ m\] em que \(X_0\) é a semente inicial, \(a\) é o multiplicador, \(c\) é o incremento e \(m\) é o módulo.

1.1 Tarefas

  1. Implemente o GLC em R ou Python (Crie uma função).
  2. Gere 1000 números aleatórios com diferentes valores de a, c, e m.
  3. Verifique a uniformidade dos números gerados usando um histograma.
  4. Calcule a média e a variância dos números gerados e compare com os valores teóricos.
  5. Teste a independência dos números gerados usando o teste de correlação.
  6. Apresente dois conjuntos distintos de parâmetros, um que trás boas propriedades e outro que não.

1.2 Respostas

1

glc <- function(seed, n, a=1664525, c=1013904223, m=2^32){
  valores <- numeric(n) # Definir o vetor de tamanho n para receber os valores
  valores[1] <- seed # O primeiro valor é a semente
  
  for (i in 2:(n+1)){ # Os valores da posição de 2 até n+1 são obtidos pela fórmula do GLC
    valores[i] <- ((a*valores[i-1]) + c) %% m
  }
  return(valores[2:(n+1)]/m)
}

Os valores de posição 2 até n+1 que serão gerados pelo GLC são o resto da divisão entre (a*valores[i-1] + c) e m.

2

  • m: Quanto maior o valor de m, mais longa será a sequência antes que os números comecem a se repetir. Dessa forma, o valor do módulo deve ser grande.
  • a: Se m for uma potência de 2, para garantir um bom período completo, uma escolha comum é selecionar um a tal que o resto da divião por 4 seja 1. Se essa condição não for satisfeita, o gerador pode ter um período muito curto ou repetir valores de forma previsível.
  • c: Para garantir que o gerador tenha um período completo, o incremento c deve ser relativamente primo ao módulo m.

parametros_0

seed <- 548254
n <- 1000
a0 <- 1664525
c0 <- 1013904223
m0 <- 2^32

glc(seed, n, a0, c0, m0)
##    [1] 0.713236355 0.980632693 0.868677132 0.038542491 0.175763572 0.095531088
##    [7] 0.120820612 0.165946068 0.614533703 0.948180089 0.698333466 0.748882389
##   [13] 0.694887411 0.703999511 0.022059056 0.085829820 0.117233870 0.943284202
##   [19] 0.373013016 0.725865633 0.728439925 0.703013123 0.154651318 0.221900871
##   [25] 0.782633319 0.961041240 0.406114904 0.646610523 0.617044971 0.015799235
##   [31] 0.457075870 0.449184015 0.258515329 0.464626022 0.864810228 0.481021006
##   [37] 0.726289781 0.733859082 0.024122217 0.268497506 0.046728122 0.363807606
##   [43] 0.090745182 0.860927297 0.245553095 0.501733451 0.108844022 0.831843677
##   [49] 0.833262985 0.305964913 0.483244184 0.261726507 0.549333280 0.214268305
##   [55] 0.187012237 0.780299572 0.380832396 0.279602354 0.345012998 0.996523263
##   [61] 0.121076457 0.026380408 0.084068223 0.894407562 0.983948150 0.530365452
##   [67] 0.790341861 0.022770342 0.039504627 0.675322947 0.164576874 0.557065980
##   [73] 0.486499484 0.789556468 0.715808609 0.561409286 0.027443793 0.115451164
##   [79] 0.584179747 0.028919737 0.861831201 0.815150026 0.833481800 0.528511033
##   [85] 0.063152088 0.465487973 0.604048182 0.536250954 0.355321794 0.245308740
##   [91] 0.766623838 0.779416541 0.554147899 0.268289591 0.967836431 0.171369582
##   [97] 0.189461575 0.764398836 0.207894102 0.165377412 0.073537993 0.063111161
##  [103] 0.341134780 0.605504030 0.831430796 0.581505777 0.140052067 0.402696519
##  [109] 0.658845637 0.270372375 0.813422675 0.614191789 0.823177775 0.221449893
##  [115] 0.119160432 0.754368626 0.673338732 0.388923102 0.462521848 0.415170056
##  [121] 0.173997022 0.628301999 0.620288243 0.524221020 0.229857929 0.505809012
##  [127] 0.981549441 0.818766362 0.315607363 0.581399024 0.445714019 0.363554132
##  [133] 0.177144760 0.118537200 0.368371130 0.190789194 0.619730066 0.423859635
##  [139] 0.195628876 0.390282160 0.648669761 0.269841812 0.677554252 0.227918621
##  [145] 0.478166965 0.103599865 0.801339652 0.120573700 0.173960595 0.994949670
##  [151] 0.834820931 0.545596918 0.945378586 0.526848732 0.120972035 0.212992365
##  [157] 0.352430180 0.081345896 0.514001197 0.078419193 0.943562270 0.224163868
##  [163] 0.597673684 0.025137414 0.089704814 0.141039540 0.076486119 0.293024012
##  [169] 0.030230302 0.328947144 0.980317356 0.982784374 0.396452297 0.995329200
##  [175] 0.573180924 0.213484022 0.728288030 0.868460294 0.106704030 0.761525669
##  [181] 0.749710059 0.372068652 0.808958125 0.259196577 0.418611995 0.367340541
##  [187] 0.749266034 0.280911239 0.016713284 0.915432471 0.469610645 0.895274363
##  [193] 0.795128056 0.763616219 0.523270167 0.511089173 0.941223035 0.508181659
##  [199] 0.311304942 0.095436023 0.882389511 0.637222404 0.857520828 0.091946325
##  [205] 0.192354378 0.906429267 0.412534135 0.617396783 0.615655226 0.751016531
##  [211] 0.027563136 0.764748946 0.975904508 0.686906026 0.488571127 0.090759074
##  [217] 0.983467757 0.904294027 0.251386059 0.616283307 0.208180875 0.506725962
##  [223] 0.268421731 0.917403161 0.732731478 0.098803930 0.847625538 0.135496323
##  [229] 0.252329307 0.675652032 0.934277796 0.984377766 0.636290702 0.017264517
##  [235] 0.456267612 0.082636176 0.217162136 0.040861740 0.623470331 0.189290691
##  [241] 0.323007812 0.814378928 0.321851540 0.170892947 0.818486324 0.184212768
##  [247] 0.992922631 0.778199447 0.670341379 0.220350793 0.639172932 0.560539233
##  [253] 0.802931585 0.932008597 0.846103399 0.496001876 0.759424293 0.956899852
##  [259] 0.961486868 0.165570777 0.934278513 0.177264136 0.822479875 0.549326779
##  [265] 0.392641883 0.465777585 0.671211028 0.772847092 0.542286705 0.014471344
##  [271] 0.149470958 0.381924536 0.173710046 0.949782837 0.513128813 0.973732085
##  [277] 0.634022890 0.186864854 0.456900333 0.262557735 0.150253370 0.726277439
##  [283] 0.190092472 0.908234681 0.567689046 0.846187602 0.653949595 0.685391798
##  [289] 0.018883259 0.893201835 0.021226227 0.821649451 0.288950535 0.624956449
##  [295] 0.868611374 0.582885602 0.892776060 0.307590710 0.662629397 0.433697237
##  [301] 0.129764218 0.021227806 0.449642460 0.351182106 0.631751185 0.876588609
##  [307] 0.890579525 0.120165773 0.169706589 0.095863261 0.031016928 0.687998978
##  [313] 0.734849236 0.160965567 0.447235500 0.907050314 0.159801893 0.482295203
##  [319] 0.658879264 0.243019215 0.795410135 0.291132733 0.948840685 0.277194258
##  [325] 0.008850256 0.708792445 0.980997489 0.080781774 0.518651243 0.195657993
##  [331] 0.856426039 0.789429775 0.832255807 0.833225853 0.498716282 0.956072192
##  [337] 0.301745487 0.142281596 0.509013247 0.510218427 0.563354803 0.390333966
##  [343] 0.881410111 0.401813214 0.376399487 0.591431780 0.219317836 0.257791797
##  [349] 0.127243757 0.651488627 0.343436352 0.629455417 0.513931678 0.362240396
##  [355] 0.431952312 0.658792112 0.177107560 0.196960603 0.083588415 0.241867834
##  [361] 0.292850438 0.111058535 0.944129275 0.017412870 0.393047605 0.800685211
##  [367] 0.787048871 0.758728582 0.928932210 0.122472148 0.188864548 0.997039460
##  [373] 0.343409917 0.627527946 0.189842579 0.954415483 0.667799629 0.412817677
##  [379] 0.580680301 0.114389794 0.908613272 0.743050101 0.705789803 0.008396692
##  [385] 0.739999646 0.146197677 0.923808180 0.046154928 0.267477328 0.935774398
##  [391] 0.115959347 0.468121321 0.878581654 0.362996439 0.882892424 0.748139685
##  [397] 0.446050745 0.851950607 0.320621672 0.024410065 0.399175612 0.020895619
##  [403] 0.516192999 0.386903286 0.428939311 0.442821176 0.153702025 0.099345823
##  [409] 0.842570170 0.348389862 0.871288715 0.083899970 0.833134070 0.724386851
##  [415] 0.259733564 0.246664330 0.179790796 0.510802425 0.643280357 0.472119619
##  [421] 0.144339444 0.849672307 0.033310481 0.364644775 0.579677898 0.588800805
##  [427] 0.895493807 0.065228386 0.515801359 0.493491768 0.621041129 0.721500430
##  [433] 0.738964950 0.869412359 0.842683170 0.439209320 0.129635370 0.549714633
##  [439] 0.986001146 0.793269274 0.774856619 0.449539935 0.696733897 0.226502987
##  [445] 0.120654784 0.141031104 0.034686579 0.914204619 0.680106887 0.151977494
##  [451] 0.574865915 0.922648099 0.062698791 0.941217807 0.806467012 0.739665733
##  [457] 0.340597178 0.753925735 0.470336744 0.505422136 0.017460581 0.809903420
##  [463] 0.725538688 0.521508466 0.115414483 0.528007720 0.285644632 0.866481975
##  [469] 0.145815475 0.739834295 0.915377636 0.195975875 0.979429483 0.095784498
##  [475] 0.928231669 0.055504511 0.881649047 0.116640086 0.575692794 0.284088850
##  [481] 0.228374676 0.593770735 0.468686923 0.336827282 0.668185251 0.291099374
##  [487] 0.421879136 0.604536736 0.746422502 0.151950331 0.361449556 0.058589099
##  [493] 0.256814543 0.463905289 0.186970795 0.799067962 0.836263468 0.684792053
##  [499] 0.728011954 0.334370666 0.568422010 0.882931137 0.186094192 0.670380665
##  [505] 0.611684270 0.994765153 0.702622851 0.537335204 0.117215492 0.352996024
##  [511] 0.943421154 0.332513310 0.952645921 0.188354999 0.840490453 0.606869083
##  [517] 0.997053707 0.058130485 0.881622047 0.173735322 0.022861879 0.404578695
##  [523] 0.588485563 0.167722440 0.430274379 0.696342102 0.073818895 0.631937708
##  [529] 0.349876163 0.856000710 0.818344708 0.461649806 0.879022358 0.926881135
##  [535] 0.058038507 0.782523682 0.467641487 0.182248501 0.422373263 0.091550732
##  [541] 0.719077751 0.130006145 0.714165604 0.738799288 0.121597381 0.116028138
##  [547] 0.971648574 0.578110416 0.476184042 0.479249616 0.203395941 0.864864030
##  [553] 0.036248314 0.461639928 0.436723085 0.728940322 0.624876220 0.326183586
##  [559] 0.970189432 0.801001492 0.245241826 0.385994043 0.970827464 0.820218809
##  [565] 0.949808901 0.897685268 0.806723279 0.301569966 0.983946643 0.022126144
##  [571] 0.755573725 0.590831759 0.469584458 0.305702674 0.979845091 0.885393075
##  [577] 0.144530812 0.385213003 0.909158356 0.049013194 0.923081139 0.869520244
##  [583] 0.420526013 0.298650400 0.293539818 0.601088131 0.457065442 0.091485909
##  [589] 0.818281200 0.750524468 0.975813853 0.790268104 0.251974714 0.447257403
##  [595] 0.365269791 0.935102091 0.043599023 0.899469511 0.723286201 0.199809556
##  [601] 0.237870245 0.206414683 0.635940058 0.360983948 0.041709244 0.316242839
##  [607] 0.348003558 0.857865959 0.571372972 0.832457446 0.465641871 0.771164332
##  [613] 0.545874881 0.622130846 0.581962459 0.298946971 0.942319396 0.429002406
##  [619] 0.466040956 0.057727365 0.878775452 0.944584473 0.706048603 0.786871332
##  [625] 0.240314086 0.040401142 0.947106261 0.284449064 0.813835105 0.114484840
##  [631] 0.114489970 0.652657492 0.947307802 0.755255720 0.262813082 0.180937963
##  [637] 0.999050744 0.175908866 0.941809951 0.444914229 0.092675620 0.122434318
##  [643] 0.219346188 0.449275744 0.943320150 0.208394897 0.752280474 0.892731281
##  [649] 0.770795058 0.879586855 0.545802945 0.883157855 0.565270107 0.461708329
##  [655] 0.291875127 0.681069966 0.221124199 0.994160611 0.427396443 0.299534142
##  [661] 0.304584531 0.803107233 0.302722280 0.038653811 0.470779821 0.016915856
##  [667] 0.101158617 0.282749469 0.795832590 0.477107982 0.400058216 0.138359174
##  [673] 0.539615513 0.747941472 0.514143377 0.741184343 0.104796829 0.177750875
##  [679] 0.011680254 0.310105869 0.207799810 0.215170579 0.044129731 0.276395543
##  [685] 0.527301301 0.433365761 0.379899869 0.066247794 0.345894312 0.965396162
##  [691] 0.282824907 0.364756741 0.950539684 0.303837665 0.625995827 0.939463553
##  [697] 0.807431809 0.667786693 0.881567484 0.351599129 0.776903413 0.390372413
##  [703] 0.877167298 0.133147083 0.883994409 0.029901758 0.459530510 0.257852044
##  [709] 0.410309801 0.157762256 0.455986992 0.984298275 0.322791661 0.026207680
##  [715] 0.574424634 0.399183592 0.305030164 0.569151497 0.132354277 0.238913606
##  [721] 0.906738681 0.439093146 0.755701225 0.817641274 0.577017946 0.033302114
##  [727] 0.437948306 0.139876758 0.597034275 0.712384833 0.600255502 0.525792609
##  [733] 0.177736849 0.664359386 0.043181143 0.327349245 0.238239066 0.117363028
##  [739] 0.930629655 0.563365762 0.630488949 0.854117517 0.196650886 0.551661038
##  [745] 0.825853619 0.231277259 0.015715973 0.866390167 0.329242829 0.156785264
##  [751] 0.227094794 0.198701191 0.336396565 0.728361916 0.853959966 0.948837154
##  [757] 0.399961701 0.486251556 0.107842413 0.627808464 0.119982726 0.483351877
##  [763] 0.519063493 0.396760570 0.124431528 0.625851127 0.083768694 0.322161950
##  [769] 0.855401241 0.987498134 0.568187885 0.174937409 0.926589156 0.050630135
##  [775] 0.360747129 0.851671697 0.067693691 0.077083418 0.512657070 0.746008432
##  [781] 0.921350431 0.062111787 0.857602867 0.648369338 0.208232221 0.974437822
##  [787] 0.351160701 0.002118797 0.025938330 0.235561968 0.020565842 0.594298711
##  [793] 0.297297671 0.641454427 0.165457276 0.009058679 0.633711085 0.179754863
##  [799] 0.700223899 0.421906486 0.129157693 0.445604928 0.778577268 0.562903900
##  [805] 0.850490304 0.609238585 0.090975919 0.926932791 0.039644885 0.138455259
##  [811] 0.475526245 0.559156551 0.293389101 0.729100793 0.732984940 0.993801835
##  [817] 0.236234908 0.146681216 0.786488000 0.174385615 0.452140218 0.932234325
##  [823] 0.576631290 0.433512536 0.690624616 0.175584083 0.332527673 0.860367598
##  [829] 0.612924151 0.809102821 0.109465702 0.634029142 0.593810180 0.125106260
##  [835] 0.733794875 0.150727150 0.344697276 0.470006344 0.545662449 0.023171858
##  [841] 0.373665209 0.318346882 0.580226818 0.280077687 0.548019972 0.179847009
##  [847] 0.077972459 0.344007473 0.275018883 0.042577449 0.464751433 0.615662024
##  [853] 0.066384746 0.305394606 0.192176451 0.742739981 0.502234071 0.402757449
##  [859] 0.078990502 0.901492993 0.860044360 0.575052227 0.044038049 0.669101208
##  [865] 0.924285458 0.487549983 0.371462777 0.314994071 0.742339956 0.651121889
##  [871] 0.898756915 0.589241439 0.342337671 0.847837390 0.768287109 0.336140005
##  [877] 0.678529177 0.014570161 0.632921870 0.511120040 0.319823404 0.287736874
##  [883] 0.456385571 0.429097437 0.647114298 0.162293785 0.298964021 0.322396082
##  [889] 0.575021542 0.968116125 0.729186585 0.536365526 0.063670345 0.116885307
##  [895] 0.752109884 0.940818972 0.936135286 0.822608948 0.394828044 0.385416579
##  [901] 0.767173225 0.248898697 0.339834512 0.277119072 0.858870278 0.286130885
##  [907] 0.246860439 0.607836670 0.568827849 0.411614976 0.653814616 0.010398324
##  [913] 0.506512729 0.335894842 0.597449984 0.670966268 0.363396256 0.388307841
##  [919] 0.344381694 0.176020881 0.392507538 0.844926713 0.873081742 0.622040863
##  [925] 0.803025738 0.652009289 0.997475154 0.566003724 0.585536422 0.248081006
##  [931] 0.272762745 0.644831587 0.533576967 0.437775244 0.074095436 0.941907295
##  [937] 0.477096039 0.520556467 0.488725127 0.428785844 0.993452121 0.127451180
##  [943] 0.912257145 0.060226116 0.111576115 0.468911704 0.489629242 0.350667932
##  [949] 0.774923003 0.946937748 0.791442168 0.510279415 0.078837565 0.334580814
##  [955] 0.366266792 0.468699666 0.547959171 0.975956398 0.059552802 0.364601753
##  [961] 0.969290623 0.709889010 0.239763953 0.329201010 0.546556065 0.470315007
##  [967] 0.322364882 0.641833649 0.391472961 0.766568238 0.232284495 0.585730693
##  [973] 0.617563125 0.496673501 0.695480901 0.582112204 0.552127821 0.796772812
##  [979] 0.500232916 0.430726842 0.832011922 0.879809485 0.118783136 0.734961723
##  [985] 0.398782133 0.066595031 0.329957558 0.839647601 0.658944279 0.462383862
##  [991] 0.733386776 0.859684348 0.324824647 0.982080810 0.295953735 0.627611761
##  [997] 0.701740401 0.677206461 0.321093046 0.638250673

parametros_1

seed <- 548254
n <- 1000
a1 <- 1664525
c1 <- 101390420 # c que não é relativamente primo ao m
m1 <- 2^10 # m pequeno

glc(seed, n, a1, c1, m1)
##    [1] 0.337890625 0.474609375 0.251953125 0.357421875 0.728515625 0.552734375
##    [7] 0.267578125 0.560546875 0.369140625 0.880859375 0.533203125 0.013671875
##   [13] 0.259765625 0.458984375 0.048828125 0.716796875 0.400390625 0.287109375
##   [19] 0.814453125 0.669921875 0.791015625 0.365234375 0.830078125 0.873046875
##   [25] 0.431640625 0.693359375 0.095703125 0.326171875 0.322265625 0.271484375
##   [31] 0.611328125 0.029296875 0.462890625 0.099609375 0.376953125 0.982421875
##   [37] 0.853515625 0.177734375 0.392578125 0.185546875 0.494140625 0.505859375
##   [43] 0.658203125 0.638671875 0.384765625 0.083984375 0.173828125 0.341796875
##   [49] 0.525390625 0.912109375 0.939453125 0.294921875 0.916015625 0.990234375
##   [55] 0.955078125 0.498046875 0.556640625 0.318359375 0.220703125 0.951171875
##   [61] 0.447265625 0.896484375 0.736328125 0.654296875 0.587890625 0.724609375
##   [67] 0.501953125 0.607421875 0.978515625 0.802734375 0.517578125 0.810546875
##   [73] 0.619140625 0.130859375 0.783203125 0.263671875 0.509765625 0.708984375
##   [79] 0.298828125 0.966796875 0.650390625 0.537109375 0.064453125 0.919921875
##   [85] 0.041015625 0.615234375 0.080078125 0.123046875 0.681640625 0.943359375
##   [91] 0.345703125 0.576171875 0.572265625 0.521484375 0.861328125 0.279296875
##   [97] 0.712890625 0.349609375 0.626953125 0.232421875 0.103515625 0.427734375
##  [103] 0.642578125 0.435546875 0.744140625 0.755859375 0.908203125 0.888671875
##  [109] 0.634765625 0.333984375 0.423828125 0.591796875 0.775390625 0.162109375
##  [115] 0.189453125 0.544921875 0.166015625 0.240234375 0.205078125 0.748046875
##  [121] 0.806640625 0.568359375 0.470703125 0.201171875 0.697265625 0.146484375
##  [127] 0.986328125 0.904296875 0.837890625 0.974609375 0.751953125 0.857421875
##  [133] 0.228515625 0.052734375 0.767578125 0.060546875 0.869140625 0.380859375
##  [139] 0.033203125 0.513671875 0.759765625 0.958984375 0.548828125 0.216796875
##  [145] 0.900390625 0.787109375 0.314453125 0.169921875 0.291015625 0.865234375
##  [151] 0.330078125 0.373046875 0.931640625 0.193359375 0.595703125 0.826171875
##  [157] 0.822265625 0.771484375 0.111328125 0.529296875 0.962890625 0.599609375
##  [163] 0.876953125 0.482421875 0.353515625 0.677734375 0.892578125 0.685546875
##  [169] 0.994140625 0.005859375 0.158203125 0.138671875 0.884765625 0.583984375
##  [175] 0.673828125 0.841796875 0.025390625 0.412109375 0.439453125 0.794921875
##  [181] 0.416015625 0.490234375 0.455078125 0.998046875 0.056640625 0.818359375
##  [187] 0.720703125 0.451171875 0.947265625 0.396484375 0.236328125 0.154296875
##  [193] 0.087890625 0.224609375 0.001953125 0.107421875 0.478515625 0.302734375
##  [199] 0.017578125 0.310546875 0.119140625 0.630859375 0.283203125 0.763671875
##  [205] 0.009765625 0.208984375 0.798828125 0.466796875 0.150390625 0.037109375
##  [211] 0.564453125 0.419921875 0.541015625 0.115234375 0.580078125 0.623046875
##  [217] 0.181640625 0.443359375 0.845703125 0.076171875 0.072265625 0.021484375
##  [223] 0.361328125 0.779296875 0.212890625 0.849609375 0.126953125 0.732421875
##  [229] 0.603515625 0.927734375 0.142578125 0.935546875 0.244140625 0.255859375
##  [235] 0.408203125 0.388671875 0.134765625 0.833984375 0.923828125 0.091796875
##  [241] 0.275390625 0.662109375 0.689453125 0.044921875 0.666015625 0.740234375
##  [247] 0.705078125 0.248046875 0.306640625 0.068359375 0.970703125 0.701171875
##  [253] 0.197265625 0.646484375 0.486328125 0.404296875 0.337890625 0.474609375
##  [259] 0.251953125 0.357421875 0.728515625 0.552734375 0.267578125 0.560546875
##  [265] 0.369140625 0.880859375 0.533203125 0.013671875 0.259765625 0.458984375
##  [271] 0.048828125 0.716796875 0.400390625 0.287109375 0.814453125 0.669921875
##  [277] 0.791015625 0.365234375 0.830078125 0.873046875 0.431640625 0.693359375
##  [283] 0.095703125 0.326171875 0.322265625 0.271484375 0.611328125 0.029296875
##  [289] 0.462890625 0.099609375 0.376953125 0.982421875 0.853515625 0.177734375
##  [295] 0.392578125 0.185546875 0.494140625 0.505859375 0.658203125 0.638671875
##  [301] 0.384765625 0.083984375 0.173828125 0.341796875 0.525390625 0.912109375
##  [307] 0.939453125 0.294921875 0.916015625 0.990234375 0.955078125 0.498046875
##  [313] 0.556640625 0.318359375 0.220703125 0.951171875 0.447265625 0.896484375
##  [319] 0.736328125 0.654296875 0.587890625 0.724609375 0.501953125 0.607421875
##  [325] 0.978515625 0.802734375 0.517578125 0.810546875 0.619140625 0.130859375
##  [331] 0.783203125 0.263671875 0.509765625 0.708984375 0.298828125 0.966796875
##  [337] 0.650390625 0.537109375 0.064453125 0.919921875 0.041015625 0.615234375
##  [343] 0.080078125 0.123046875 0.681640625 0.943359375 0.345703125 0.576171875
##  [349] 0.572265625 0.521484375 0.861328125 0.279296875 0.712890625 0.349609375
##  [355] 0.626953125 0.232421875 0.103515625 0.427734375 0.642578125 0.435546875
##  [361] 0.744140625 0.755859375 0.908203125 0.888671875 0.634765625 0.333984375
##  [367] 0.423828125 0.591796875 0.775390625 0.162109375 0.189453125 0.544921875
##  [373] 0.166015625 0.240234375 0.205078125 0.748046875 0.806640625 0.568359375
##  [379] 0.470703125 0.201171875 0.697265625 0.146484375 0.986328125 0.904296875
##  [385] 0.837890625 0.974609375 0.751953125 0.857421875 0.228515625 0.052734375
##  [391] 0.767578125 0.060546875 0.869140625 0.380859375 0.033203125 0.513671875
##  [397] 0.759765625 0.958984375 0.548828125 0.216796875 0.900390625 0.787109375
##  [403] 0.314453125 0.169921875 0.291015625 0.865234375 0.330078125 0.373046875
##  [409] 0.931640625 0.193359375 0.595703125 0.826171875 0.822265625 0.771484375
##  [415] 0.111328125 0.529296875 0.962890625 0.599609375 0.876953125 0.482421875
##  [421] 0.353515625 0.677734375 0.892578125 0.685546875 0.994140625 0.005859375
##  [427] 0.158203125 0.138671875 0.884765625 0.583984375 0.673828125 0.841796875
##  [433] 0.025390625 0.412109375 0.439453125 0.794921875 0.416015625 0.490234375
##  [439] 0.455078125 0.998046875 0.056640625 0.818359375 0.720703125 0.451171875
##  [445] 0.947265625 0.396484375 0.236328125 0.154296875 0.087890625 0.224609375
##  [451] 0.001953125 0.107421875 0.478515625 0.302734375 0.017578125 0.310546875
##  [457] 0.119140625 0.630859375 0.283203125 0.763671875 0.009765625 0.208984375
##  [463] 0.798828125 0.466796875 0.150390625 0.037109375 0.564453125 0.419921875
##  [469] 0.541015625 0.115234375 0.580078125 0.623046875 0.181640625 0.443359375
##  [475] 0.845703125 0.076171875 0.072265625 0.021484375 0.361328125 0.779296875
##  [481] 0.212890625 0.849609375 0.126953125 0.732421875 0.603515625 0.927734375
##  [487] 0.142578125 0.935546875 0.244140625 0.255859375 0.408203125 0.388671875
##  [493] 0.134765625 0.833984375 0.923828125 0.091796875 0.275390625 0.662109375
##  [499] 0.689453125 0.044921875 0.666015625 0.740234375 0.705078125 0.248046875
##  [505] 0.306640625 0.068359375 0.970703125 0.701171875 0.197265625 0.646484375
##  [511] 0.486328125 0.404296875 0.337890625 0.474609375 0.251953125 0.357421875
##  [517] 0.728515625 0.552734375 0.267578125 0.560546875 0.369140625 0.880859375
##  [523] 0.533203125 0.013671875 0.259765625 0.458984375 0.048828125 0.716796875
##  [529] 0.400390625 0.287109375 0.814453125 0.669921875 0.791015625 0.365234375
##  [535] 0.830078125 0.873046875 0.431640625 0.693359375 0.095703125 0.326171875
##  [541] 0.322265625 0.271484375 0.611328125 0.029296875 0.462890625 0.099609375
##  [547] 0.376953125 0.982421875 0.853515625 0.177734375 0.392578125 0.185546875
##  [553] 0.494140625 0.505859375 0.658203125 0.638671875 0.384765625 0.083984375
##  [559] 0.173828125 0.341796875 0.525390625 0.912109375 0.939453125 0.294921875
##  [565] 0.916015625 0.990234375 0.955078125 0.498046875 0.556640625 0.318359375
##  [571] 0.220703125 0.951171875 0.447265625 0.896484375 0.736328125 0.654296875
##  [577] 0.587890625 0.724609375 0.501953125 0.607421875 0.978515625 0.802734375
##  [583] 0.517578125 0.810546875 0.619140625 0.130859375 0.783203125 0.263671875
##  [589] 0.509765625 0.708984375 0.298828125 0.966796875 0.650390625 0.537109375
##  [595] 0.064453125 0.919921875 0.041015625 0.615234375 0.080078125 0.123046875
##  [601] 0.681640625 0.943359375 0.345703125 0.576171875 0.572265625 0.521484375
##  [607] 0.861328125 0.279296875 0.712890625 0.349609375 0.626953125 0.232421875
##  [613] 0.103515625 0.427734375 0.642578125 0.435546875 0.744140625 0.755859375
##  [619] 0.908203125 0.888671875 0.634765625 0.333984375 0.423828125 0.591796875
##  [625] 0.775390625 0.162109375 0.189453125 0.544921875 0.166015625 0.240234375
##  [631] 0.205078125 0.748046875 0.806640625 0.568359375 0.470703125 0.201171875
##  [637] 0.697265625 0.146484375 0.986328125 0.904296875 0.837890625 0.974609375
##  [643] 0.751953125 0.857421875 0.228515625 0.052734375 0.767578125 0.060546875
##  [649] 0.869140625 0.380859375 0.033203125 0.513671875 0.759765625 0.958984375
##  [655] 0.548828125 0.216796875 0.900390625 0.787109375 0.314453125 0.169921875
##  [661] 0.291015625 0.865234375 0.330078125 0.373046875 0.931640625 0.193359375
##  [667] 0.595703125 0.826171875 0.822265625 0.771484375 0.111328125 0.529296875
##  [673] 0.962890625 0.599609375 0.876953125 0.482421875 0.353515625 0.677734375
##  [679] 0.892578125 0.685546875 0.994140625 0.005859375 0.158203125 0.138671875
##  [685] 0.884765625 0.583984375 0.673828125 0.841796875 0.025390625 0.412109375
##  [691] 0.439453125 0.794921875 0.416015625 0.490234375 0.455078125 0.998046875
##  [697] 0.056640625 0.818359375 0.720703125 0.451171875 0.947265625 0.396484375
##  [703] 0.236328125 0.154296875 0.087890625 0.224609375 0.001953125 0.107421875
##  [709] 0.478515625 0.302734375 0.017578125 0.310546875 0.119140625 0.630859375
##  [715] 0.283203125 0.763671875 0.009765625 0.208984375 0.798828125 0.466796875
##  [721] 0.150390625 0.037109375 0.564453125 0.419921875 0.541015625 0.115234375
##  [727] 0.580078125 0.623046875 0.181640625 0.443359375 0.845703125 0.076171875
##  [733] 0.072265625 0.021484375 0.361328125 0.779296875 0.212890625 0.849609375
##  [739] 0.126953125 0.732421875 0.603515625 0.927734375 0.142578125 0.935546875
##  [745] 0.244140625 0.255859375 0.408203125 0.388671875 0.134765625 0.833984375
##  [751] 0.923828125 0.091796875 0.275390625 0.662109375 0.689453125 0.044921875
##  [757] 0.666015625 0.740234375 0.705078125 0.248046875 0.306640625 0.068359375
##  [763] 0.970703125 0.701171875 0.197265625 0.646484375 0.486328125 0.404296875
##  [769] 0.337890625 0.474609375 0.251953125 0.357421875 0.728515625 0.552734375
##  [775] 0.267578125 0.560546875 0.369140625 0.880859375 0.533203125 0.013671875
##  [781] 0.259765625 0.458984375 0.048828125 0.716796875 0.400390625 0.287109375
##  [787] 0.814453125 0.669921875 0.791015625 0.365234375 0.830078125 0.873046875
##  [793] 0.431640625 0.693359375 0.095703125 0.326171875 0.322265625 0.271484375
##  [799] 0.611328125 0.029296875 0.462890625 0.099609375 0.376953125 0.982421875
##  [805] 0.853515625 0.177734375 0.392578125 0.185546875 0.494140625 0.505859375
##  [811] 0.658203125 0.638671875 0.384765625 0.083984375 0.173828125 0.341796875
##  [817] 0.525390625 0.912109375 0.939453125 0.294921875 0.916015625 0.990234375
##  [823] 0.955078125 0.498046875 0.556640625 0.318359375 0.220703125 0.951171875
##  [829] 0.447265625 0.896484375 0.736328125 0.654296875 0.587890625 0.724609375
##  [835] 0.501953125 0.607421875 0.978515625 0.802734375 0.517578125 0.810546875
##  [841] 0.619140625 0.130859375 0.783203125 0.263671875 0.509765625 0.708984375
##  [847] 0.298828125 0.966796875 0.650390625 0.537109375 0.064453125 0.919921875
##  [853] 0.041015625 0.615234375 0.080078125 0.123046875 0.681640625 0.943359375
##  [859] 0.345703125 0.576171875 0.572265625 0.521484375 0.861328125 0.279296875
##  [865] 0.712890625 0.349609375 0.626953125 0.232421875 0.103515625 0.427734375
##  [871] 0.642578125 0.435546875 0.744140625 0.755859375 0.908203125 0.888671875
##  [877] 0.634765625 0.333984375 0.423828125 0.591796875 0.775390625 0.162109375
##  [883] 0.189453125 0.544921875 0.166015625 0.240234375 0.205078125 0.748046875
##  [889] 0.806640625 0.568359375 0.470703125 0.201171875 0.697265625 0.146484375
##  [895] 0.986328125 0.904296875 0.837890625 0.974609375 0.751953125 0.857421875
##  [901] 0.228515625 0.052734375 0.767578125 0.060546875 0.869140625 0.380859375
##  [907] 0.033203125 0.513671875 0.759765625 0.958984375 0.548828125 0.216796875
##  [913] 0.900390625 0.787109375 0.314453125 0.169921875 0.291015625 0.865234375
##  [919] 0.330078125 0.373046875 0.931640625 0.193359375 0.595703125 0.826171875
##  [925] 0.822265625 0.771484375 0.111328125 0.529296875 0.962890625 0.599609375
##  [931] 0.876953125 0.482421875 0.353515625 0.677734375 0.892578125 0.685546875
##  [937] 0.994140625 0.005859375 0.158203125 0.138671875 0.884765625 0.583984375
##  [943] 0.673828125 0.841796875 0.025390625 0.412109375 0.439453125 0.794921875
##  [949] 0.416015625 0.490234375 0.455078125 0.998046875 0.056640625 0.818359375
##  [955] 0.720703125 0.451171875 0.947265625 0.396484375 0.236328125 0.154296875
##  [961] 0.087890625 0.224609375 0.001953125 0.107421875 0.478515625 0.302734375
##  [967] 0.017578125 0.310546875 0.119140625 0.630859375 0.283203125 0.763671875
##  [973] 0.009765625 0.208984375 0.798828125 0.466796875 0.150390625 0.037109375
##  [979] 0.564453125 0.419921875 0.541015625 0.115234375 0.580078125 0.623046875
##  [985] 0.181640625 0.443359375 0.845703125 0.076171875 0.072265625 0.021484375
##  [991] 0.361328125 0.779296875 0.212890625 0.849609375 0.126953125 0.732421875
##  [997] 0.603515625 0.927734375 0.142578125 0.935546875
period <- length(unique(glc(seed, n, a1, c1, m1))); period
## [1] 256

parametros_2

seed <- 548254
n <- 1000
a2 <- 1664520 # a que não tem resto na divisão por 4
c2 <- 1013904223
m2 <- 2^32

glc(seed, n, a2, c2, m2)
##    [1] 0.71259810 0.03180026 0.40573288 0.72192371 0.69694603 0.84233940
##    [7] 0.01720512 0.50988091 0.20128716 0.73253716 0.98253716 0.98253716
##   [13] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##   [19] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##   [25] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##   [31] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##   [37] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##   [43] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##   [49] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##   [55] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##   [61] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##   [67] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##   [73] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##   [79] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##   [85] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##   [91] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##   [97] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [103] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [109] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [115] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [121] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [127] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [133] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [139] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [145] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [151] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [157] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [163] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [169] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [175] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [181] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [187] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [193] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [199] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [205] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [211] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [217] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [223] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [229] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [235] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [241] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [247] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [253] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [259] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [265] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [271] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [277] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [283] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [289] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [295] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [301] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [307] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [313] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [319] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [325] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [331] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [337] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [343] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [349] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [355] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [361] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [367] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [373] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [379] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [385] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [391] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [397] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [403] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [409] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [415] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [421] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [427] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [433] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [439] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [445] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [451] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [457] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [463] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [469] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [475] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [481] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [487] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [493] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [499] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [505] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [511] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [517] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [523] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [529] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [535] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [541] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [547] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [553] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [559] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [565] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [571] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [577] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [583] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [589] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [595] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [601] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [607] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [613] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [619] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [625] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [631] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [637] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [643] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [649] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [655] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [661] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [667] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [673] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [679] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [685] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [691] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [697] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [703] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [709] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [715] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [721] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [727] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [733] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [739] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [745] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [751] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [757] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [763] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [769] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [775] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [781] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [787] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [793] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [799] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [805] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [811] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [817] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [823] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [829] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [835] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [841] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [847] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [853] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [859] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [865] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [871] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [877] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [883] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [889] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [895] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [901] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [907] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [913] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [919] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [925] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [931] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [937] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [943] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [949] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [955] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [961] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [967] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [973] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [979] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [985] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [991] 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716 0.98253716
##  [997] 0.98253716 0.98253716 0.98253716 0.98253716

parametros_3

seed <- 548254
n <- 1000
a3 <- 1664525
c3 <- 1013904223
m3 <- 2^4 # m pequeno

glc(seed, n, a3, c3, m3)
##    [1] 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000
##   [11] 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250
##   [21] 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500
##   [31] 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750
##   [41] 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000
##   [51] 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250
##   [61] 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500
##   [71] 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750
##   [81] 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000
##   [91] 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250
##  [101] 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500
##  [111] 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750
##  [121] 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000
##  [131] 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250
##  [141] 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500
##  [151] 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750
##  [161] 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000
##  [171] 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250
##  [181] 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500
##  [191] 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750
##  [201] 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000
##  [211] 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250
##  [221] 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500
##  [231] 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750
##  [241] 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000
##  [251] 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250
##  [261] 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500
##  [271] 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750
##  [281] 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000
##  [291] 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250
##  [301] 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500
##  [311] 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750
##  [321] 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000
##  [331] 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250
##  [341] 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500
##  [351] 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750
##  [361] 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000
##  [371] 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250
##  [381] 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500
##  [391] 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750
##  [401] 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000
##  [411] 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250
##  [421] 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500
##  [431] 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750
##  [441] 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000
##  [451] 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250
##  [461] 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500
##  [471] 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750
##  [481] 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000
##  [491] 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250
##  [501] 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500
##  [511] 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750
##  [521] 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000
##  [531] 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250
##  [541] 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500
##  [551] 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750
##  [561] 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000
##  [571] 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250
##  [581] 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500
##  [591] 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750
##  [601] 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000
##  [611] 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250
##  [621] 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500
##  [631] 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750
##  [641] 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000
##  [651] 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250
##  [661] 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500
##  [671] 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750
##  [681] 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000
##  [691] 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250
##  [701] 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500
##  [711] 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750
##  [721] 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000
##  [731] 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250
##  [741] 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500
##  [751] 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750
##  [761] 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000
##  [771] 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250
##  [781] 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500
##  [791] 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750
##  [801] 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000
##  [811] 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250
##  [821] 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500
##  [831] 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750
##  [841] 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000
##  [851] 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250
##  [861] 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500
##  [871] 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750
##  [881] 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000
##  [891] 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250
##  [901] 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500
##  [911] 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750
##  [921] 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000
##  [931] 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250
##  [941] 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500
##  [951] 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750
##  [961] 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000
##  [971] 0.4375 0.6250 0.0625 0.7500 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250
##  [981] 0.5625 0.2500 0.1875 0.3750 0.8125 0.5000 0.4375 0.6250 0.0625 0.7500
##  [991] 0.6875 0.8750 0.3125 0.0000 0.9375 0.1250 0.5625 0.2500 0.1875 0.3750

3

# Geração de n números pseudo-aleatórios
npa1 <- glc(seed, n, a0, c0, m0)

# Histograma dos números gerados
hist(npa1, probability = T,
     main = "Histograma dos Números Pseudo-Aleatórios")
curve(dunif(x), add = T, col = "red") # curva da uniforme(0, 1) para comparar

4

Cálculo da média e da variância dos números gerados.

Xbarra <- mean(npa1)
VX <- var(npa1)

Xbarra; VX
## [1] 0.4922603
## [1] 0.08561696

A distribuição teórica dos números gerados pelo GLC é Uniforme no intervalo de 0 até m-1, desde que os valores de a, c, e m sejam escolhidos adequadamente. Como os números gerados foram dividos por m, então eles seguem a distribuição Uniforme no intervalo [0, 1].

Mu <- (1+0)/2
Sigma2 <- ((1-0)^2)/12

Mu; Sigma2
## [1] 0.5
## [1] 0.08333333

5

# Verificação da indepêndencia dos números gerados
acf(npa1, main = "Função de Autocorrelação")

O gráfico indica que os números pseudo-aleatórios gerados são independentes, já que os valores de autocorrelação estão próximos de 0.

6

Na questão 2 foram gerados diferentes conjuntos de números pseudo-aleatórios. Os parâmetros a0, c0 e m0 foram os que demonstraram boas propriedades de uniformidade, independência e período longo.

# parâmetros com boas propriedades
a0 <- 1664525
c0 <- 1013904223
m0 <- 2^32

Os parâmetros c1, a2 e m3 foram os que apresentaram propriedades ruins.

# parâmetros com propriedades ruins
c1 <- 101390420
a2 <- 1664520
m3 <- 2^4
glc(seed, n, a2, c1, m3)
##    [1] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##   [15] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##   [29] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##   [43] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##   [57] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##   [71] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##   [85] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##   [99] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [113] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [127] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [141] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [155] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [169] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [183] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [197] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [211] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [225] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [239] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [253] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [267] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [281] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [295] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [309] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [323] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [337] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [351] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [365] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [379] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [393] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [407] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [421] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [435] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [449] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [463] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [477] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [491] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [505] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [519] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [533] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [547] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [561] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [575] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [589] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [603] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [617] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [631] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [645] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [659] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [673] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [687] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [701] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [715] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [729] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [743] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [757] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [771] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [785] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [799] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [813] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [827] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [841] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [855] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [869] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [883] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [897] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [911] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [925] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [939] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [953] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [967] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [981] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
##  [995] 0.25 0.25 0.25 0.25 0.25 0.25

Observe que mesmo aumentando o valor de m, os números continuam com período curto.

# parâmetros com propriedades ruins
c1 <- 101390420
a2 <- 1664520
m3 <- 2^32
glc(seed, n, a2, c1, m3)
##    [1] 0.5001369 0.9425046 0.7008231 0.0331335 0.4036531 0.7515993 0.1054811
##    [8] 0.4990358 0.1474733 0.3349733 0.8349733 0.8349733 0.8349733 0.8349733
##   [15] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##   [22] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##   [29] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##   [36] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##   [43] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##   [50] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##   [57] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##   [64] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##   [71] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##   [78] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##   [85] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##   [92] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##   [99] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [106] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [113] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [120] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [127] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [134] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [141] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [148] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [155] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [162] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [169] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [176] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [183] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [190] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [197] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [204] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [211] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [218] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [225] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [232] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [239] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [246] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [253] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [260] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [267] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [274] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [281] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [288] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [295] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [302] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [309] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [316] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [323] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [330] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [337] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [344] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [351] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [358] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [365] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [372] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [379] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [386] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [393] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [400] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [407] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [414] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [421] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [428] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [435] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [442] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [449] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [456] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [463] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [470] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [477] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [484] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [491] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [498] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [505] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [512] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [519] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [526] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [533] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [540] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [547] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [554] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [561] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [568] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [575] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [582] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [589] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [596] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [603] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [610] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [617] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [624] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [631] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [638] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [645] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [652] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [659] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [666] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [673] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [680] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [687] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [694] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [701] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [708] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [715] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [722] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [729] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [736] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [743] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [750] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [757] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [764] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [771] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [778] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [785] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [792] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [799] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [806] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [813] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [820] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [827] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [834] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [841] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [848] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [855] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [862] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [869] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [876] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [883] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [890] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [897] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [904] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [911] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [918] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [925] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [932] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [939] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [946] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [953] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [960] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [967] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [974] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [981] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [988] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733
##  [995] 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733 0.8349733

2 Implementar um Gerador de Tausworthe

  • DESCRIÇÃO: O Gerador de Tausworthe é baseado em registros de deslocamento linear (LFSR).

2.1 Tarefas

  1. Implemente o algoritmo de Tausworthe em R ou Python (Crie uma função).
  2. Gere 1000 números aleatórios e verifique a uniformidade e a correlação dos números gerados.
  3. Teste o período do gerador para garantir que seja longo o suficiente.

2.2 Respostas

1

O gerador foi baseado no polinômio primitivo \(x^p +x^r +1\).

Parâmetros utilizados na função:

  • n: Quantidade de números pseudo-aleatórios desejados.
  • p: Comprimento do registrador de deslocamento (número de bits na sequência inicial).
  • r: Posição de feedback usada na geração dos bits.
  • l: Número de bits em cada número pseudo-aleatório gerado. Esse número deve ser relativamente primo a \(2^p - 1\) e maior do que p para que o período seja máximo.
library(compositions) # Necessário para a função unbinary()
g_tausworthe <- function(n, p=9, r=4, l=10){
  q <- p-r
  N <- l*n # Total de bits que serão gerados
  
  lista0 <- rep(1, p) # p bits iguais a 1
  
  # Loop para gerar os bits
  for (i in 1:N){
    nbit_i <- length(lista0) + 1
    nbit <- ifelse(lista0[nbit_i - p] == lista0[nbit_i - p+q], 0, 1)
    lista0 <- append(lista0, nbit)
  }
  lista0 <- lista0[(p+1):length(lista0)] # retirada dos primeiros p bits
  
  # Divisão dos bits em grupos de l bits
  lista_bits <- split(lista0, ceiling(seq_along(lista0) / l))
  
  # Conversão dos bits em números pseudo-aleatórios
  NPAs <- NULL
  for (i in 1:length(lista_bits)){
    # A função unbinary converte  os bits em números decimais
    # A divisão por 2^l normaliza os números gerados
    NPA <- (unbinary(paste(lista_bits[[i]], collapse=""))) / 2^l
    NPAs <- append(NPAs, NPA)
  }
  return(NPAs)
}

2

Geração de 1000 números pseudo-aleatórios

# Geração de 1000 números pseudo-aleatórios
npa2 <- g_tausworthe(1000); npa2
##    [1] 0.059570312 0.760742188 0.213867188 0.815429688 0.594726562 0.134765625
##    [7] 0.920898438 0.147460938 0.218750000 0.465820312 0.239257812 0.156250000
##   [13] 0.333007812 0.958984375 0.512695312 0.856445312 0.376953125 0.935546875
##   [19] 0.237304688 0.301757812 0.775390625 0.186523438 0.646484375 0.162109375
##   [25] 0.187500000 0.399414062 0.347656250 0.990234375 0.571289062 0.746093750
##   [31] 0.707031250 0.158203125 0.461914062 0.480468750 0.208007812 0.222656250
##   [37] 0.191406250 0.125000000 0.266601562 0.569335938 0.338867188 0.110351562
##   [43] 0.164062500 0.850585938 0.808593750 0.357421875 0.320312500 0.149414062
##   [49] 0.819335938 0.867187500 0.249023438 0.529296875 0.879882812 0.606445312
##   [55] 0.907226562 0.796875000 0.567382812 0.459960938 0.573242188 0.609375000
##   [61] 0.232421875 0.619140625 0.578125000 0.166015625 0.979492188 0.255859375
##   [67] 0.927734375 0.688476562 0.467773438 0.118164062 0.650390625 0.887695312
##   [73] 0.092773438 0.823242188 0.081054688 0.093750000 0.199218750 0.673828125
##   [79] 0.495117188 0.285156250 0.873046875 0.353515625 0.079101562 0.230468750
##   [85] 0.740234375 0.103515625 0.611328125 0.095703125 0.062500000 0.132812500
##   [91] 0.784179688 0.668945312 0.554687500 0.582031250 0.424804688 0.904296875
##   [97] 0.178710938 0.160156250 0.074218750 0.909179688 0.933593750 0.124023438
##  [103] 0.764648438 0.439453125 0.802734375 0.953125000 0.898437500 0.283203125
##  [109] 0.729492188 0.786132812 0.804687500 0.116210938 0.309570312 0.289062500
##  [115] 0.083007812 0.489257812 0.627929688 0.463867188 0.343750000 0.733398438
##  [121] 0.558593750 0.825195312 0.443359375 0.545898438 0.911132812 0.540039062
##  [127] 0.546875000 0.099609375 0.336914062 0.247070312 0.642578125 0.436523438
##  [133] 0.176757812 0.039062500 0.615234375 0.370117188 0.051757812 0.305664062
##  [139] 0.047851562 0.031250000 0.066406250 0.391601562 0.833984375 0.777343750
##  [145] 0.291015625 0.211914062 0.952148438 0.088867188 0.580078125 0.037109375
##  [151] 0.454101562 0.966796875 0.061523438 0.881835938 0.719726562 0.401367188
##  [157] 0.476562500 0.449218750 0.141601562 0.364257812 0.892578125 0.902343750
##  [163] 0.057617188 0.654296875 0.644531250 0.041015625 0.744140625 0.813476562
##  [169] 0.731445312 0.671875000 0.366210938 0.779296875 0.412109375 0.721679688
##  [175] 0.272460938 0.955078125 0.769531250 0.773437500 0.049804688 0.167968750
##  [181] 0.623046875 0.821289062 0.217773438 0.587890625 0.519531250 0.307617188
##  [187] 0.184570312 0.525390625 0.652343750 0.523437500 0.515625000 0.033203125
##  [193] 0.195312500 0.916992188 0.388671875 0.145507812 0.105468750 0.975585938
##  [199] 0.543945312 0.790039062 0.018554688 0.226562500 0.983398438 0.030273438
##  [205] 0.940429688 0.859375000 0.700195312 0.738281250 0.224609375 0.070312500
##  [211] 0.681640625 0.946289062 0.451171875 0.028320312 0.827148438 0.322265625
##  [217] 0.020507812 0.372070312 0.406250000 0.865234375 0.835937500 0.182617188
##  [223] 0.889648438 0.206054688 0.360351562 0.635742188 0.977539062 0.384765625
##  [229] 0.386718750 0.024414062 0.583984375 0.311523438 0.410156250 0.608398438
##  [235] 0.793945312 0.259765625 0.153320312 0.591796875 0.762695312 0.326171875
##  [241] 0.261718750 0.257812500 0.016601562 0.097656250 0.458007812 0.694335938
##  [247] 0.072265625 0.552734375 0.487304688 0.771484375 0.894531250 0.508789062
##  [253] 0.613281250 0.491210938 0.514648438 0.969726562 0.929687500 0.349609375
##  [259] 0.869140625 0.112304688 0.035156250 0.340820312 0.472656250 0.725585938
##  [265] 0.013671875 0.913085938 0.661132812 0.009765625 0.685546875 0.703125000
##  [271] 0.432617188 0.417968750 0.090820312 0.944335938 0.602539062 0.679687500
##  [277] 0.817382812 0.988281250 0.692382812 0.193359375 0.011718750 0.791992188
##  [283] 0.155273438 0.705078125 0.303710938 0.896484375 0.629882812 0.076171875
##  [289] 0.795898438 0.380859375 0.663085938 0.130859375 0.128906250 0.007812500
##  [295] 0.548828125 0.228515625 0.846679688 0.536132812 0.276367188 0.243164062
##  [301] 0.885742188 0.447265625 0.253906250 0.806640625 0.245117188 0.756835938
##  [307] 0.984375000 0.964843750 0.174804688 0.434570312 0.055664062 0.517578125
##  [313] 0.169921875 0.736328125 0.362304688 0.506835938 0.456054688 0.830078125
##  [319] 0.504882812 0.342773438 0.351562500 0.215820312 0.708984375 0.044921875
##  [325] 0.971679688 0.800781250 0.839843750 0.408203125 0.994140625 0.345703125
##  [331] 0.596679688 0.005859375 0.395507812 0.577148438 0.852539062 0.151367188
##  [337] 0.948242188 0.314453125 0.538085938 0.397460938 0.690429688 0.331054688
##  [343] 0.565429688 0.064453125 0.003906250 0.274414062 0.114257812 0.422851562
##  [349] 0.767578125 0.637695312 0.621093750 0.942382812 0.723632812 0.126953125
##  [355] 0.403320312 0.122070312 0.877929688 0.992187500 0.482421875 0.086914062
##  [361] 0.716796875 0.527343750 0.758789062 0.084960938 0.368164062 0.180664062
##  [367] 0.752929688 0.727539062 0.915039062 0.251953125 0.670898438 0.675781250
##  [373] 0.107421875 0.854492188 0.022460938 0.485351562 0.900390625 0.419921875
##  [379] 0.204101562 0.497070312 0.172851562 0.297851562 0.502929688 0.197265625
##  [385] 0.788085938 0.925781250 0.575195312 0.973632812 0.657226562 0.268554688
##  [391] 0.698242188 0.844726562 0.665039062 0.782226562 0.532226562 0.001953125
##  [397] 0.136718750 0.556640625 0.710937500 0.883789062 0.318359375 0.810546875
##  [403] 0.470703125 0.861328125 0.563476562 0.201171875 0.560546875 0.938476562
##  [409] 0.996093750 0.241210938 0.042968750 0.858398438 0.263671875 0.378906250
##  [415] 0.541992188 0.683593750 0.589843750 0.875976562 0.863281250 0.957031250
##  [421] 0.625976562 0.334960938 0.837890625 0.053710938 0.426757812 0.510742188
##  [427] 0.742187500 0.950195312 0.209960938 0.101562500 0.748046875 0.585937500
##  [433] 0.648437500 0.750976562 0.598632812 0.393554688 0.962890625 0.287109375
##  [439] 0.986328125 0.828125000 0.633789062 0.848632812 0.921875000 0.832031250
##  [445] 0.890625000 0.765625000 0.500976562 0.068359375 0.278320312 0.355468750
##  [451] 0.441406250 0.659179688 0.405273438 0.235351562 0.430664062 0.281250000
##  [457] 0.600585938 0.280273438 0.468750000 0.998046875 0.120117188 0.521484375
##  [463] 0.428710938 0.631835938 0.189453125 0.270507812 0.841796875 0.294921875
##  [469] 0.437500000 0.931640625 0.478515625 0.312500000 0.666992188 0.918945312
##  [475] 0.026367188 0.712890625 0.754882812 0.871093750 0.474609375 0.604492188
##  [481] 0.550781250 0.374023438 0.292968750 0.324218750 0.375000000 0.798828125
##  [487] 0.696289062 0.981445312 0.143554688 0.493164062 0.414062500 0.316406250
##  [493] 0.923828125 0.960937500 0.416015625 0.445312500 0.382812500 0.250000000
##  [499] 0.534179688 0.138671875 0.677734375 0.220703125 0.329101562 0.702148438
##  [505] 0.617187500 0.714843750 0.640625000 0.299804688 0.639648438 0.734375000
##  [511] 0.499023438 0.059570312 0.760742188 0.213867188 0.815429688 0.594726562
##  [517] 0.134765625 0.920898438 0.147460938 0.218750000 0.465820312 0.239257812
##  [523] 0.156250000 0.333007812 0.958984375 0.512695312 0.856445312 0.376953125
##  [529] 0.935546875 0.237304688 0.301757812 0.775390625 0.186523438 0.646484375
##  [535] 0.162109375 0.187500000 0.399414062 0.347656250 0.990234375 0.571289062
##  [541] 0.746093750 0.707031250 0.158203125 0.461914062 0.480468750 0.208007812
##  [547] 0.222656250 0.191406250 0.125000000 0.266601562 0.569335938 0.338867188
##  [553] 0.110351562 0.164062500 0.850585938 0.808593750 0.357421875 0.320312500
##  [559] 0.149414062 0.819335938 0.867187500 0.249023438 0.529296875 0.879882812
##  [565] 0.606445312 0.907226562 0.796875000 0.567382812 0.459960938 0.573242188
##  [571] 0.609375000 0.232421875 0.619140625 0.578125000 0.166015625 0.979492188
##  [577] 0.255859375 0.927734375 0.688476562 0.467773438 0.118164062 0.650390625
##  [583] 0.887695312 0.092773438 0.823242188 0.081054688 0.093750000 0.199218750
##  [589] 0.673828125 0.495117188 0.285156250 0.873046875 0.353515625 0.079101562
##  [595] 0.230468750 0.740234375 0.103515625 0.611328125 0.095703125 0.062500000
##  [601] 0.132812500 0.784179688 0.668945312 0.554687500 0.582031250 0.424804688
##  [607] 0.904296875 0.178710938 0.160156250 0.074218750 0.909179688 0.933593750
##  [613] 0.124023438 0.764648438 0.439453125 0.802734375 0.953125000 0.898437500
##  [619] 0.283203125 0.729492188 0.786132812 0.804687500 0.116210938 0.309570312
##  [625] 0.289062500 0.083007812 0.489257812 0.627929688 0.463867188 0.343750000
##  [631] 0.733398438 0.558593750 0.825195312 0.443359375 0.545898438 0.911132812
##  [637] 0.540039062 0.546875000 0.099609375 0.336914062 0.247070312 0.642578125
##  [643] 0.436523438 0.176757812 0.039062500 0.615234375 0.370117188 0.051757812
##  [649] 0.305664062 0.047851562 0.031250000 0.066406250 0.391601562 0.833984375
##  [655] 0.777343750 0.291015625 0.211914062 0.952148438 0.088867188 0.580078125
##  [661] 0.037109375 0.454101562 0.966796875 0.061523438 0.881835938 0.719726562
##  [667] 0.401367188 0.476562500 0.449218750 0.141601562 0.364257812 0.892578125
##  [673] 0.902343750 0.057617188 0.654296875 0.644531250 0.041015625 0.744140625
##  [679] 0.813476562 0.731445312 0.671875000 0.366210938 0.779296875 0.412109375
##  [685] 0.721679688 0.272460938 0.955078125 0.769531250 0.773437500 0.049804688
##  [691] 0.167968750 0.623046875 0.821289062 0.217773438 0.587890625 0.519531250
##  [697] 0.307617188 0.184570312 0.525390625 0.652343750 0.523437500 0.515625000
##  [703] 0.033203125 0.195312500 0.916992188 0.388671875 0.145507812 0.105468750
##  [709] 0.975585938 0.543945312 0.790039062 0.018554688 0.226562500 0.983398438
##  [715] 0.030273438 0.940429688 0.859375000 0.700195312 0.738281250 0.224609375
##  [721] 0.070312500 0.681640625 0.946289062 0.451171875 0.028320312 0.827148438
##  [727] 0.322265625 0.020507812 0.372070312 0.406250000 0.865234375 0.835937500
##  [733] 0.182617188 0.889648438 0.206054688 0.360351562 0.635742188 0.977539062
##  [739] 0.384765625 0.386718750 0.024414062 0.583984375 0.311523438 0.410156250
##  [745] 0.608398438 0.793945312 0.259765625 0.153320312 0.591796875 0.762695312
##  [751] 0.326171875 0.261718750 0.257812500 0.016601562 0.097656250 0.458007812
##  [757] 0.694335938 0.072265625 0.552734375 0.487304688 0.771484375 0.894531250
##  [763] 0.508789062 0.613281250 0.491210938 0.514648438 0.969726562 0.929687500
##  [769] 0.349609375 0.869140625 0.112304688 0.035156250 0.340820312 0.472656250
##  [775] 0.725585938 0.013671875 0.913085938 0.661132812 0.009765625 0.685546875
##  [781] 0.703125000 0.432617188 0.417968750 0.090820312 0.944335938 0.602539062
##  [787] 0.679687500 0.817382812 0.988281250 0.692382812 0.193359375 0.011718750
##  [793] 0.791992188 0.155273438 0.705078125 0.303710938 0.896484375 0.629882812
##  [799] 0.076171875 0.795898438 0.380859375 0.663085938 0.130859375 0.128906250
##  [805] 0.007812500 0.548828125 0.228515625 0.846679688 0.536132812 0.276367188
##  [811] 0.243164062 0.885742188 0.447265625 0.253906250 0.806640625 0.245117188
##  [817] 0.756835938 0.984375000 0.964843750 0.174804688 0.434570312 0.055664062
##  [823] 0.517578125 0.169921875 0.736328125 0.362304688 0.506835938 0.456054688
##  [829] 0.830078125 0.504882812 0.342773438 0.351562500 0.215820312 0.708984375
##  [835] 0.044921875 0.971679688 0.800781250 0.839843750 0.408203125 0.994140625
##  [841] 0.345703125 0.596679688 0.005859375 0.395507812 0.577148438 0.852539062
##  [847] 0.151367188 0.948242188 0.314453125 0.538085938 0.397460938 0.690429688
##  [853] 0.331054688 0.565429688 0.064453125 0.003906250 0.274414062 0.114257812
##  [859] 0.422851562 0.767578125 0.637695312 0.621093750 0.942382812 0.723632812
##  [865] 0.126953125 0.403320312 0.122070312 0.877929688 0.992187500 0.482421875
##  [871] 0.086914062 0.716796875 0.527343750 0.758789062 0.084960938 0.368164062
##  [877] 0.180664062 0.752929688 0.727539062 0.915039062 0.251953125 0.670898438
##  [883] 0.675781250 0.107421875 0.854492188 0.022460938 0.485351562 0.900390625
##  [889] 0.419921875 0.204101562 0.497070312 0.172851562 0.297851562 0.502929688
##  [895] 0.197265625 0.788085938 0.925781250 0.575195312 0.973632812 0.657226562
##  [901] 0.268554688 0.698242188 0.844726562 0.665039062 0.782226562 0.532226562
##  [907] 0.001953125 0.136718750 0.556640625 0.710937500 0.883789062 0.318359375
##  [913] 0.810546875 0.470703125 0.861328125 0.563476562 0.201171875 0.560546875
##  [919] 0.938476562 0.996093750 0.241210938 0.042968750 0.858398438 0.263671875
##  [925] 0.378906250 0.541992188 0.683593750 0.589843750 0.875976562 0.863281250
##  [931] 0.957031250 0.625976562 0.334960938 0.837890625 0.053710938 0.426757812
##  [937] 0.510742188 0.742187500 0.950195312 0.209960938 0.101562500 0.748046875
##  [943] 0.585937500 0.648437500 0.750976562 0.598632812 0.393554688 0.962890625
##  [949] 0.287109375 0.986328125 0.828125000 0.633789062 0.848632812 0.921875000
##  [955] 0.832031250 0.890625000 0.765625000 0.500976562 0.068359375 0.278320312
##  [961] 0.355468750 0.441406250 0.659179688 0.405273438 0.235351562 0.430664062
##  [967] 0.281250000 0.600585938 0.280273438 0.468750000 0.998046875 0.120117188
##  [973] 0.521484375 0.428710938 0.631835938 0.189453125 0.270507812 0.841796875
##  [979] 0.294921875 0.437500000 0.931640625 0.478515625 0.312500000 0.666992188
##  [985] 0.918945312 0.026367188 0.712890625 0.754882812 0.871093750 0.474609375
##  [991] 0.604492188 0.550781250 0.374023438 0.292968750 0.324218750 0.375000000
##  [997] 0.798828125 0.696289062 0.981445312 0.143554688

Verificação de uniformidade

# Verificação da uniformidade com histograma
hist(npa2, probability = TRUE)
curve(dunif(x), add = T, col = "red") # Comparação com a distribuição teórica

O histograma está muito próximo da curva teórica, o que indica que os números gerados seguem a distribuição uniforme(0, 1).

Verificação de correlação

# Verificação da independência dos números
acf(npa2, main = "Função de Autocorrelação")

Os valores de autocorrelação estão próximos de zero, o que indica que os números gerados são independentes.

3

Para calcular o período dos números gerados foi feito a contagem dos números de forma única, o que resulta na quantidade total de números distintos.

periodo <- length(unique(npa2))
cat("Período da sequência:", periodo, "números únicos")
## Período da sequência: 511 números únicos

Apesar de serem gerados 1000 números pseudo-aleatórios, o período resultante foi 511. A função resultou em um período de \(2^p-1\).

Para aumentar o período é necessário escolher um valor de p grande (o polinômio deve continuar sendo primitivo) e um valor de l que seja relativamente primo a \(2^p-1\) e que seja maior do que p.

Geração dos números com p grande

Vamos usar o polinômio primitivo \(x^{31} +x^{13} +1\). O valor p igual a 31 tem um período máximo de \(2^{31}-1=2147483647\).

npa2_1 <- g_tausworthe(1000, p=31, r=13, l=32); npa2_1
##    [1] 0.0001220556 0.9921884246 0.5004291476 0.9962124790 0.7558824976
##    [6] 0.6113264635 0.1015477013 0.0556410856 0.9077719511 0.1253431158
##   [11] 0.6408973637 0.5163508949 0.6079708263 0.9697295278 0.4941954380
##   [16] 0.2574024240 0.5127922336 0.8359682679 0.5531065846 0.2424503418
##   [21] 0.6960431924 0.4520926536 0.1549309175 0.1428565013 0.7271984550
##   [26] 0.0942932367 0.8759797812 0.4395127369 0.6327342934 0.7371879856
##   [31] 0.6640317319 0.5532166597 0.7502626334 0.1961057845 0.5497379254
##   [36] 0.8990487212 0.7223793420 0.6399942762 0.0863936252 0.0317921699
##   [41] 0.3147824164 0.0231174473 0.2210660237 0.1967469556 0.4604441312
##   [46] 0.7444249312 0.4524973058 0.0624660240 0.1881415034 0.2088279065
##   [51] 0.6163265684 0.6413883267 0.4829072952 0.4657608196 0.1307559034
##   [56] 0.5107177421 0.1659789188 0.5844667342 0.8049512955 0.8209840588
##   [61] 0.7002811383 0.6009512786 0.7223227918 0.3665565078 0.5859677428
##   [66] 0.9653978299 0.5667128244 0.5999280382 0.1305055520 0.2358472755
##   [71] 0.6161511389 0.6192148535 0.8428805198 0.5461783123 0.6700737039
##   [76] 0.8015984979 0.8877566110 0.8978141802 0.9720693866 0.6298540726
##   [81] 0.6753137514 0.7370507794 0.5950085409 0.8989832846 0.9129755928
##   [86] 0.9638402765 0.0368072030 0.5076357964 0.3463451564 0.1770828762
##   [91] 0.2186758847 0.2953504310 0.2223194081 0.0783000693 0.8807674395
##   [96] 0.0559617104 0.0665213661 0.4713871363 0.4342478984 0.1563261568
##  [101] 0.7405409680 0.7698673753 0.7024164766 0.8759174361 0.7511941490
##  [106] 0.5756855009 0.8486169595 0.0087584255 0.9199929149 0.9135437768
##  [111] 0.8498963185 0.7648240568 0.5807438833 0.1475589925 0.1375391185
##  [116] 0.3531696969 0.0879228422 0.7856817306 0.0725777501 0.5061782319
##  [121] 0.1851911743 0.8613206947 0.6338208166 0.8807851463 0.8427884155
##  [126] 0.4602408423 0.1702564142 0.1960797803 0.1358265588 0.4752313080
##  [131] 0.8794945276 0.6835996695 0.2676221558 0.6121998220 0.2354070733
##  [136] 0.3830007762 0.4457281439 0.0585640226 0.4685004933 0.7502638979
##  [141] 0.8590742091 0.9818006514 0.7280769444 0.4591853756 0.5420845912
##  [146] 0.4051380882 0.7766182972 0.1670188804 0.6686729700 0.3771864059
##  [151] 0.5602250570 0.3458112283 0.1110653984 0.4753168332 0.1022402791
##  [156] 0.4282796017 0.0014565133 0.6301862532 0.3340669803 0.8909599427
##  [161] 0.3258284095 0.2891947895 0.8107782970 0.7965094142 0.7665742063
##  [166] 0.1256930528 0.1079413849 0.4070943831 0.3881486731 0.4675417999
##  [171] 0.3799234398 0.5562916067 0.1221119727 0.9103125152 0.2481312323
##  [176] 0.2706473379 0.6733271652 0.0114480196 0.0426762500 0.6896389248
##  [181] 0.0340595040 0.9227198910 0.1844446901 0.4889584600 0.9678877210
##  [186] 0.0212222221 0.5182117710 0.2494346772 0.8910335444 0.9759866393
##  [191] 0.9022780987 0.3496957535 0.9785846637 0.7781861550 0.1557515017
##  [196] 0.9181204666 0.3632971523 0.9234232125 0.4271473680 0.9060698114
##  [201] 0.2828694994 0.5208806768 0.4675809655 0.9754796324 0.6896908588
##  [206] 0.7695465719 0.5097361763 0.5449294960 0.9136915514 0.3434733390
##  [211] 0.3629357531 0.3979735374 0.0459507767 0.4037765770 0.9705208584
##  [216] 0.5017718987 0.9876686151 0.2037059260 0.9799186275 0.3999762428
##  [221] 0.4466894541 0.0590211176 0.0562815273 0.6501139256 0.6360882050
##  [226] 0.1723057360 0.5481581527 0.6463168187 0.4221406702 0.5685786067
##  [231] 0.8274251600 0.6980257507 0.8876452711 0.0230922508 0.9634558235
##  [236] 0.7457258599 0.3883798602 0.1275747328 0.6547282527 0.3972725419
##  [241] 0.9476448728 0.1912872016 0.9548305331 0.8440139724 0.8356355471
##  [246] 0.1065782534 0.5219307041 0.0408146242 0.5420218422 0.6004513921
##  [251] 0.2765566732 0.8350596512 0.4167426352 0.9880474764 0.5882253316
##  [256] 0.3387667646 0.9533304097 0.3504658735 0.7431289400 0.9122949308
##  [261] 0.6093224206 0.3479587520 0.1680754719 0.6482059641 0.8132195198
##  [266] 0.6095380336 0.2581681148 0.9608337721 0.4612097717 0.3264343378
##  [271] 0.2345508686 0.2993989007 0.8494279196 0.4358413080 0.5039462813
##  [276] 0.9957700029 0.7450011428 0.3347534917 0.5877759764 0.7845268091
##  [281] 0.4230669159 0.1908834570 0.5247695001 0.3384420655 0.6888087934
##  [286] 0.3120415725 0.2232990812 0.4572740591 0.6536089042 0.0020422726
##  [291] 0.7353257386 0.0528097956 0.5694187041 0.2784559408 0.5827245424
##  [296] 0.3377750393 0.7917259268 0.9463279143 0.7269405948 0.3095087477
##  [301] 0.1508614300 0.6068334174 0.2973747032 0.3956654705 0.3831745752
##  [306] 0.0655509841 0.7251307429 0.1702429419 0.0148017053 0.3626547100
##  [311] 0.2288239261 0.8372627741 0.4996077940 0.6280756921 0.8046463097
##  [316] 0.9861675669 0.1666813970 0.3564087427 0.3975845976 0.1208612244
##  [321] 0.1682260768 0.7498210573 0.3176575447 0.6692100146 0.5668674181
##  [326] 0.9171622032 0.9636534019 0.0286216778 0.0555411342 0.5652374430
##  [331] 0.0782230746 0.2630424723 0.5221203296 0.4030820492 0.8544626699
##  [336] 0.2002827905 0.7327678171 0.1591197262 0.7553433757 0.9589227545
##  [341] 0.3575010572 0.2056239815 0.2769430142 0.4213890161 0.8891497806
##  [346] 0.2825451784 0.6065230861 0.9378309869 0.4080830712 0.8686323981
##  [351] 0.2121096165 0.9152672146 0.2912552340 0.0423460777 0.6247957356
##  [356] 0.8436816845 0.5045625528 0.0827434461 0.3087025543 0.5837846566
##  [361] 0.3775458126 0.4863021816 0.6134100701 0.7027204833 0.5527125208
##  [366] 0.5632574107 0.2248923127 0.1421541537 0.9971861762 0.2517879063
##  [371] 0.8763023925 0.0801096619 0.6320980033 0.1494662396 0.0922609691
##  [376] 0.4944935336 0.9831788640 0.0868459665 0.3755504014 0.3199870132
##  [381] 0.9774555971 0.7853283298 0.6649761100 0.6674028328 0.1184864233
##  [386] 0.2427321521 0.9442280959 0.5887055905 0.4207999986 0.7059133807
##  [391] 0.5128384088 0.0019954187 0.1780533500 0.4031213860 0.4801975682
##  [396] 0.1534012882 0.2301527415 0.1553904249 0.1026539388 0.0585857274
##  [401] 0.8388712883 0.5465826385 0.6258037309 0.1351363952 0.1513928736
##  [406] 0.2267235345 0.1001867210 0.5053657573 0.1933407201 0.3547263420
##  [411] 0.4616242358 0.8769074010 0.7810706128 0.4882142004 0.1297340097
##  [416] 0.7436759507 0.1122435185 0.8416938952 0.6748031033 0.4457451240
##  [421] 0.2105881711 0.6961617330 0.3527468378 0.3583053367 0.5285638832
##  [426] 0.7386782283 0.3583806502 0.1088479615 0.6001915163 0.0272900199
##  [431] 0.8497043359 0.4785100000 0.9763267504 0.5854143729 0.5651843385
##  [436] 0.4865142752 0.3816439922 0.6207599756 0.2354375294 0.4169932944
##  [441] 0.2541836326 0.9357170579 0.9004131812 0.1189274369 0.0254551603
##  [446] 0.8467819258 0.1708409444 0.5471815157 0.6717140293 0.8009728708
##  [451] 0.9256359357 0.0377918158 0.8475297294 0.1069288442 0.7038994555
##  [456] 0.3820579122 0.6383058720 0.3641805158 0.7621425700 0.6957110080
##  [461] 0.5426090332 0.4470716980 0.7166013410 0.0821375137 0.6111000830
##  [466] 0.2825984312 0.4055711785 0.8340097973 0.9966533286 0.6217900040
##  [471] 0.2186735717 0.5079638474 0.3654972857 0.4234785200 0.4218948628
##  [476] 0.6951764685 0.8037150821 0.7179749892 0.7667889947 0.7974691447
##  [481] 0.0959036557 0.0774358595 0.5879073294 0.9337964600 0.5989739525
##  [486] 0.9126584446 0.0533386776 0.8102005876 0.9250180069 0.0580369858
##  [491] 0.0228143113 0.3071921102 0.7434956082 0.6874701467 0.0266743253
##  [496] 0.0427259407 0.6536420595 0.9942298022 0.2348986473 0.9473146591
##  [501] 0.3135518709 0.8563084209 0.5500855586 0.3448192049 0.1359435900
##  [506] 0.8216089802 0.1173266694 0.7932799687 0.7392141325 0.3871058566
##  [511] 0.1978020810 0.1433022621 0.8801555960 0.7764582164 0.2040147628
##  [516] 0.0840484716 0.6949144350 0.1852212243 0.1142230683 0.9483168144
##  [521] 0.7727035540 0.7223212451 0.1786724890 0.5506373846 0.5442122305
##  [526] 0.9043846370 0.7976971492 0.5759178239 0.9179980438 0.5538287638
##  [531] 0.8668460150 0.3026327118 0.1638776881 0.2856072378 0.8776260477
##  [536] 0.0603070278 0.3696654446 0.5833797911 0.1740973603 0.4415399013
##  [541] 0.9393009639 0.8501398128 0.6617554307 0.2371901481 0.5458470187
##  [546] 0.1163585710 0.3617208635 0.3175344656 0.1254101072 0.2641580151
##  [551] 0.4047320364 0.9115945946 0.7886167618 0.8663862851 0.3333178204
##  [556] 0.1336929745 0.8564108755 0.2794380314 0.5572350831 0.7171682396
##  [561] 0.8615460761 0.9919966832 0.0582052739 0.3063873991 0.6260345711
##  [566] 0.1613588342 0.8231691010 0.0467255155 0.7163364396 0.9674698848
##  [571] 0.2129136608 0.4953757792 0.4305814025 0.4605487175 0.7550507172
##  [576] 0.5209071119 0.3267638353 0.9877081043 0.4688587387 0.9477818992
##  [581] 0.2828660023 0.8163657116 0.1208853908 0.9976088840 0.6371393006
##  [586] 0.2321589068 0.3432497217 0.1033744083 0.7610384868 0.8632849548
##  [591] 0.2939781102 0.6427216996 0.0598551643 0.2756253744 0.6194181708
##  [596] 0.7448972112 0.8366334287 0.4438587714 0.1898336525 0.8779128538
##  [601] 0.9291175595 0.9543901342 0.6399047587 0.1463730007 0.8181141373
##  [606] 0.8050792208 0.7649732425 0.8015896678 0.2594588620 0.6803395697
##  [611] 0.5117406766 0.4724288108 0.1885329757 0.9498442216 0.0437261362
##  [616] 0.0031015836 0.1175303056 0.5261361080 0.8298199910 0.0039998458
##  [621] 0.0633052085 0.0357934902 0.0415622671 0.5481532130 0.2441173953
##  [626] 0.6828843371 0.3031220895 0.8637119182 0.4430538143 0.1818623175
##  [631] 0.3986548607 0.2254286276 0.9583250976 0.7026983171 0.1731176630
##  [636] 0.8585852818 0.2589482756 0.9908935479 0.3902202265 0.0622948171
##  [641] 0.4500505030 0.9469388921 0.3378848634 0.3371208161 0.7914627444
##  [646] 0.9937349549 0.6999403543 0.1963963057 0.3651870254 0.5865093535
##  [651] 0.9870158026 0.4524190535 0.0267838547 0.4749346753 0.4930621716
##  [656] 0.4062789127 0.9711312519 0.5274070310 0.1385698668 0.7588607688
##  [661] 0.1124496674 0.2322213161 0.6858031068 0.0389687102 0.7508195257
##  [666] 0.1661719626 0.6341771539 0.2361334360 0.5846380007 0.6073222011
##  [671] 0.5350136878 0.3137179664 0.1882041313 0.2918414497 0.4267477947
##  [676] 0.3947377019 0.9672348211 0.4496307296 0.0968814993 0.9966665811
##  [681] 0.6653790299 0.4102749424 0.9088256320 0.5553878956 0.1634905161
##  [686] 0.3050455942 0.1356197654 0.5845237470 0.8829594920 0.8316327971
##  [691] 0.6928451562 0.0156970944 0.7669573829 0.0225609201 0.3788774712
##  [696] 0.1586531817 0.6431861131 0.5449817581 0.4468428181 0.7152888840
##  [701] 0.0580167121 0.4179540970 0.5182219157 0.5056215250 0.3074134889
##  [706] 0.6617435373 0.3780981819 0.5913495217 0.3575364007 0.7360058757
##  [711] 0.4556640496 0.8445137625 0.8675982524 0.9001906528 0.8938434483
##  [716] 0.6775008850 0.8101672141 0.4219568130 0.2374782213 0.5107827634
##  [721] 0.2637833194 0.9173859197 0.7204337132 0.6911806767 0.8670120614
##  [726] 0.7456811899 0.8083436314 0.2517884232 0.1521509951 0.7383320413
##  [731] 0.8558416674 0.1955786652 0.9071904966 0.7780378307 0.4205572719
##  [736] 0.9643096039 0.0999938103 0.7392508087 0.1622062204 0.5836197643
##  [741] 0.9848607362 0.3216128468 0.3952842904 0.0195710538 0.8296444726
##  [746] 0.0505265258 0.4154938492 0.6437794212 0.6048833197 0.1457890670
##  [751] 0.2499562947 0.4140790380 0.4988073935 0.2673576642 0.8853158767
##  [756] 0.7217689336 0.7339848075 0.1036996357 0.2992321670 0.2995386166
##  [761] 0.1007985051 0.2568637487 0.0908679459 0.8427810867 0.6764589418
##  [766] 0.0784980848 0.6979591725 0.9814032577 0.0233509061 0.5717805261
##  [771] 0.5620740599 0.6895399089 0.1210274773 0.4882311614 0.2686048346
##  [776] 0.7622153566 0.8561982003 0.7790779932 0.6907773751 0.1580325253
##  [781] 0.8688860449 0.2266760797 0.9702320141 0.9388085927 0.9568502135
##  [786] 0.9858345725 0.7665013620 0.9966605296 0.8502886661 0.5926163546
##  [791] 0.5463747876 0.6605705880 0.4129182864 0.7858324021 0.9288321640
##  [796] 0.3332105787 0.8918105271 0.2748003886 0.0288482830 0.7568854000
##  [801] 0.4268351551 0.3370448025 0.1530778054 0.5825901006 0.8355646634
##  [806] 0.1775862044 0.0392573099 0.2144813531 0.5712422198 0.3304973177
##  [811] 0.4303818145 0.8478666085 0.9834640224 0.5825835192 0.6488850114
##  [816] 0.8272129218 0.4120364424 0.0698088550 0.8215855882 0.8266640163
##  [821] 0.6303336273 0.1011329759 0.9902400717 0.0296709468 0.0630115736
##  [826] 0.0859945745 0.7516093440 0.2590466829 0.5844331170 0.4300785970
##  [831] 0.8129541811 0.7464370411 0.5230837890 0.5251092918 0.5499156856
##  [836] 0.1578340093 0.1677061315 0.1022531143 0.1285935901 0.3216184555
##  [841] 0.0890442589 0.9831681284 0.7151551689 0.1712884717 0.1648301450
##  [846] 0.1404649187 0.3346201100 0.8974074330 0.2254820748 0.9716438721
##  [851] 0.7873078783 0.5066838923 0.2957505891 0.9191249216 0.9849917842
##  [856] 0.6531666792 0.2416106605 0.9154543062 0.3814296981 0.7508049889
##  [861] 0.5454997935 0.9126731521 0.2799659013 0.2984287669 0.0306945499
##  [866] 0.7790685727 0.7623907372 0.8389684004 0.7386577651 0.1140394390
##  [871] 0.7189732152 0.4665371578 0.2324853817 0.2370867364 0.7597273095
##  [876] 0.4281248199 0.4357958832 0.3220549088 0.1359476971 0.9788396009
##  [881] 0.1815646319 0.4554089729 0.6114459834 0.9520406374 0.6099433890
##  [886] 0.7799722317 0.6074882199 0.9986466805 0.5303135044 0.0554991823
##  [891] 0.5713950237 0.6617531916 0.0749784685 0.4133432754 0.2224195802
##  [896] 0.6068744841 0.2062057748 0.3712342938 0.0680370650 0.1508325313
##  [901] 0.8851165390 0.2492065933 0.4740569252 0.6631293769 0.5853442771
##  [906] 0.8175766976 0.0167434211 0.3413112753 0.7858591403 0.0860071895
##  [911] 0.6469124865 0.2463668298 0.3204552680 0.4924510741 0.7986593065
##  [916] 0.8964684349 0.4313751645 0.0561107569 0.1832883235 0.5138537753
##  [921] 0.3489549886 0.3570690879 0.7477450999 0.7135891586 0.3388858398
##  [926] 0.4178642088 0.8957122723 0.9716344702 0.7283898287 0.4961621074
##  [931] 0.1592056600 0.7987826222 0.7354723848 0.1252263985 0.9479099503
##  [936] 0.1668266247 0.4057838714 0.3223945538 0.2406164953 0.1733927017
##  [941] 0.9325194552 0.1246919613 0.2503299331 0.4796281455 0.6969644197
##  [946] 0.4382784744 0.7712423066 0.6123754783 0.1441707674 0.2853169669
##  [951] 0.8164611368 0.3937392128 0.4650206547 0.3196659901 0.6612248744
##  [956] 0.0891823589 0.0632600132 0.3403494863 0.5334175683 0.4962141349
##  [961] 0.8896613989 0.0475132251 0.5213554476 0.4268257490 0.2685967395
##  [966] 0.5219982872 0.4819416432 0.8072430571 0.2670414825 0.1783564095
##  [971] 0.4814807228 0.3992856480 0.3786037120 0.6399730539 0.4643742654
##  [976] 0.2152680401 0.1151041638 0.5066358596 0.0991982017 0.3731827193
##  [981] 0.5299980193 0.5834853936 0.2866947539 0.0480006891 0.2182953835
##  [986] 0.7877524369 0.7070599557 0.4016259729 0.3758989985 0.5858379994
##  [991] 0.9949493988 0.9790928878 0.3266785562 0.0111465279 0.9691657838
##  [996] 0.0533153014 0.5387027212 0.2988693567 0.0275478307 0.9428284895

Verificação do período

periodo <- length(unique(npa2_1))
cat("Período da sequência:", periodo, "números únicos")
## Período da sequência: 1000 números únicos

Como esperado, o período resultou no total de números solicitados devido ao aumento de p. Esses números só começarão a se repetir após o número de posição \(2^p-1\).

3 Implementar Testes de Aleatoriedade para Verificação

  • DESCRIÇÃO: Verifique se os números gerados nos exercícios anteriores têm boas propriedades de aleatoriedade.

3.1 Tarefas

  1. Implemente o teste de chi-quadrado para verificar a uniformidade dos números.
  2. Implemente o teste de autocorrelação para verificar a correlação entre os números gerados.

3.2 Respostas

1

Teste de Uniformidade para os números gerados pelo Gerador Linear Congruente

observado <- hist(npa1, breaks = 10, plot = FALSE)$counts
esperado <- rep(100, 10)

# Teste Qui-Quadrado
chisq.test(x = observado, p = esperado / sum(esperado))
## 
##  Chi-squared test for given probabilities
## 
## data:  observado
## X-squared = 6.5, df = 9, p-value = 0.689

Como o p-value foi maior do que 0.05, então não há evidências suficientes para rejeitar a hipótese de que os números gerados seguem a distribuição uniforme no intervalo (0, 1).

Teste de Uniformidade para os números gerados pelo Gerador de Tausworthe

observado <- hist(npa2_1, breaks = 10, plot = FALSE)$counts
esperado <- rep(100, 10)

# Teste Qui-Quadrado
chisq.test(x = observado, p = esperado / sum(esperado))
## 
##  Chi-squared test for given probabilities
## 
## data:  observado
## X-squared = 3.92, df = 9, p-value = 0.9166

Como o p-value foi maior do que 0.05, então não há evidências suficientes para rejeitar a hipótese de que os números gerados seguem a distribuição uniforme no intervalo (0, 1).

2

Teste de Autocorrelação para os números gerados pelo Gerador Linear Congruente

# Verificação da independência dos números
acf(npa1, main = "Função de Autocorrelação")

Como os valores de autocorrelação estão próximos de zero, então há evidências de que os números gerados pelo Gerador Linear Congruente são independentes.

Teste de Autocorrelação para os números gerados pelo Gerador de Tausworthe

# Verificação da independência dos números
acf(npa2_1, main = "Função de Autocorrelação")

Como os valores de autocorrelação estão próximos de zero, então há evidências de que os números gerados pelo Gerador de Tausworthe são independentes.

4 Gerar Variável Uniforme no Intervalo de 10 a 50

  • DESCRIÇÃO: Nesta atividade, você irá implementar uma variável aleatória uniforme no intervalo de 10 a 50, utilizando a transformação de uma distribuição uniforme padrão no intervalo de 0 a 1.

4.1 Tarefas

  1. Use a transformação linear para mapear os valores de 0 a 1 para o intervalo de 10 a 50.
  2. Calcule a média, mediana e desvio padrão da amostra gerada.
  3. Faça um histograma para visualizar a distribuição dos valores transformados.

4.2 Respostas

1

# u é uma uniforme(0, 1)
u <- glc(seed=548254, n=1000)

# u1 é uma uniforme(10, 50)
u1 <- (u*40)+10; u1
##    [1] 38.52945 49.22531 44.74709 11.54170 17.03054 13.82124 14.83282 16.63784
##    [9] 34.58135 47.92720 37.93334 39.95530 37.79550 38.15998 10.88236 13.43319
##   [17] 14.68935 47.73137 24.92052 39.03463 39.13760 38.12052 16.18605 18.87603
##   [25] 41.30533 48.44165 26.24460 35.86442 34.68180 10.63197 28.28303 27.96736
##   [33] 20.34061 28.58504 44.59241 29.24084 39.05159 39.35436 10.96489 20.73990
##   [41] 11.86912 24.55230 13.62981 44.43709 19.82212 30.06934 14.35376 43.27375
##   [49] 43.33052 22.23860 29.32977 20.46906 31.97333 18.57073 17.48049 41.21198
##   [57] 25.23330 21.18409 23.80052 49.86093 14.84306 11.05522 13.36273 45.77630
##   [65] 49.35793 31.21462 41.61367 10.91081 11.58019 37.01292 16.58307 32.28264
##   [73] 29.45998 41.58226 38.63234 32.45637 11.09775 14.61805 33.36719 11.15679
##   [81] 44.47325 42.60600 43.33927 31.14044 12.52608 28.61952 34.16193 31.45004
##   [89] 24.21287 19.81235 40.66495 41.17666 32.16592 20.73158 48.71346 16.85478
##   [97] 17.57846 40.57595 18.31576 16.61510 12.94152 12.52445 23.64539 34.22016
##  [105] 43.25723 33.26023 15.60208 26.10786 36.35383 20.81489 42.53691 34.56767
##  [113] 42.92711 18.85800 14.76642 40.17475 36.93355 25.55692 28.50087 26.60680
##  [121] 16.95988 35.13208 34.81153 30.96884 19.19432 30.23236 49.26198 42.75065
##  [129] 22.62429 33.25596 27.82856 24.54217 17.08579 14.74149 24.73485 17.63157
##  [137] 34.78920 26.95439 17.82516 25.61129 35.94679 20.79367 37.10217 19.11674
##  [145] 29.12668 14.14399 42.05359 14.82295 16.95842 49.79799 43.39284 31.82388
##  [153] 47.81514 31.07395 14.83888 18.51969 24.09721 13.25384 30.56005 13.13677
##  [161] 47.74249 18.96655 33.90695 11.00550 13.58819 15.64158 13.05944 21.72096
##  [169] 11.20921 23.15789 49.21269 49.31137 25.85809 49.81317 32.92724 18.53936
##  [177] 39.13152 44.73841 14.26816 40.46103 39.98840 24.88275 42.35833 20.36786
##  [185] 26.74448 24.69362 39.97064 21.23645 10.66853 46.61730 28.78443 45.81097
##  [193] 41.80512 40.54465 30.93081 30.44357 47.64892 30.32727 22.45220 13.81744
##  [201] 45.29558 35.48890 44.30083 13.67785 17.69418 46.25717 26.50137 34.69587
##  [209] 34.62621 40.04066 11.10253 40.58996 49.03618 37.47624 29.54285 13.63036
##  [217] 49.33871 46.17176 20.05544 34.65133 18.32723 30.26904 20.73687 46.69613
##  [225] 39.30926 13.95216 43.90502 15.41985 20.09317 37.02608 47.37111 49.37511
##  [233] 35.45163 10.69058 28.25070 13.30545 18.68649 11.63447 34.93881 17.57163
##  [241] 22.92031 42.57516 22.87406 16.83572 42.73945 17.36851 49.71691 41.12798
##  [249] 36.81366 18.81403 35.56692 32.42157 42.11726 47.28034 43.84414 29.84008
##  [257] 40.37697 48.27599 48.45947 16.62283 47.37114 17.09057 42.89919 31.97307
##  [265] 25.70568 28.63110 36.84844 40.91388 31.69147 10.57885 15.97884 25.27698
##  [273] 16.94840 47.99131 30.52515 48.94928 35.36092 17.47459 28.27601 20.50231
##  [281] 16.01013 39.05110 17.60370 46.32939 32.70756 43.84750 36.15798 37.41567
##  [289] 10.75533 45.72807 10.84905 42.86598 21.55802 34.99826 44.74445 33.31542
##  [297] 45.71104 22.30363 36.50518 27.34789 15.19057 10.84911 27.98570 24.04728
##  [305] 35.27005 45.06354 45.62318 14.80663 16.78826 13.83453 11.24068 37.51996
##  [313] 39.39397 16.43862 27.88942 46.28201 16.39208 29.29181 36.35517 19.72077
##  [321] 41.81641 21.64531 47.95363 21.08777 10.35401 38.35170 49.23990 13.23127
##  [329] 30.74605 17.82632 44.25704 41.57719 43.29023 43.32903 29.94865 48.24289
##  [337] 22.06982 15.69126 30.36053 30.40874 32.53419 25.61336 45.25640 26.07253
##  [345] 25.05598 33.65727 18.77271 20.31167 15.08975 36.05955 23.73745 35.17822
##  [353] 30.55727 24.48962 27.27809 36.35168 17.08430 17.87842 13.34354 19.67471
##  [361] 21.71402 14.44234 47.76517 10.69651 25.72190 42.02741 41.48195 40.34914
##  [369] 47.15729 14.89889 17.55458 49.88158 23.73640 35.10112 17.59370 48.17662
##  [377] 36.71199 26.51271 33.22721 14.57559 46.34453 39.72200 38.23159 10.33587
##  [385] 39.59999 15.84791 46.95233 11.84620 20.69909 47.43098 14.63837 28.72485
##  [393] 45.14327 24.51986 45.31570 39.92559 27.84203 44.07802 22.82487 10.97640
##  [401] 25.96702 10.83582 30.64772 25.47613 27.15757 27.71285 16.14808 13.97383
##  [409] 43.70281 23.93559 44.85155 13.35600 43.32536 38.97547 20.38934 19.86657
##  [417] 17.19163 30.43210 35.73121 28.88478 15.77358 43.98689 11.33242 24.58579
##  [425] 33.18712 33.55203 45.81975 12.60914 30.63205 29.73967 34.84165 38.86002
##  [433] 39.55860 44.77649 43.70733 27.56837 15.18541 31.98859 49.44005 41.73077
##  [441] 40.99426 27.98160 37.86936 19.06012 14.82619 15.64124 11.38746 46.56818
##  [449] 37.20428 16.07910 32.99464 46.90592 12.50795 47.64871 42.25868 39.58663
##  [457] 23.62389 40.15703 28.81347 30.21689 10.69842 42.39614 39.02155 30.86034
##  [465] 14.61658 31.12031 21.42579 44.65928 15.83262 39.59337 46.61511 17.83904
##  [473] 49.17718 13.83138 47.12927 12.22018 45.26596 14.66560 33.02771 21.36355
##  [481] 19.13499 33.75083 28.74748 23.47309 36.72741 21.64397 26.87517 34.18147
##  [489] 39.85690 16.07801 24.45798 12.34356 20.27258 28.55621 17.47883 41.96272
##  [497] 43.45054 37.39168 39.12048 23.37483 32.73688 45.31725 17.44377 36.81523
##  [505] 34.46737 49.79061 38.10491 31.49341 14.68862 24.11984 47.73685 23.30053
##  [513] 48.10584 17.53420 43.61962 34.27476 49.88215 12.32522 45.26488 16.94941
##  [521] 10.91448 26.18315 33.53942 16.70890 27.21098 37.85368 12.95276 35.27751
##  [529] 23.99505 44.24003 42.73379 28.46599 45.16089 47.07525 12.32154 41.30095
##  [537] 28.70566 17.28994 26.89493 13.66203 38.76311 15.20025 38.56662 39.55197
##  [545] 14.86390 14.64113 48.86594 33.12442 29.04736 29.16998 18.13584 44.59456
##  [553] 11.44993 28.46560 27.46892 39.15761 34.99505 23.04734 48.80758 42.04006
##  [561] 19.80967 25.43976 48.83310 42.80875 47.99236 45.90741 42.26893 22.06280
##  [569] 49.35787 10.88505 40.22295 33.63327 28.78338 22.22811 49.19380 45.41572
##  [577] 15.78123 25.40852 46.36633 11.96053 46.92325 44.78081 26.82104 21.94602
##  [585] 21.74159 34.04353 28.28262 13.65944 42.73125 40.02098 49.03255 41.61072
##  [593] 20.07899 27.89030 24.61079 47.40408 11.74396 45.97878 38.93145 17.99238
##  [601] 19.51481 18.25659 35.43760 24.43936 11.66837 22.64971 23.92014 44.31464
##  [609] 32.85492 43.29830 28.62567 40.84657 31.83500 34.88523 33.27850 21.95788
##  [617] 47.69278 27.16010 28.64164 12.30909 45.15102 47.78338 38.24194 41.47485
##  [625] 19.61256 11.61605 47.88425 21.37796 42.55340 14.57939 14.57960 36.10630
##  [633] 47.89231 40.21023 20.51252 17.23752 49.96203 17.03635 47.67240 27.79657
##  [641] 13.70702 14.89737 18.77385 27.97103 47.73281 18.33580 40.09122 45.70925
##  [649] 40.83180 45.18347 31.83212 45.32631 32.61080 28.46833 21.67501 37.24280
##  [657] 18.84497 49.76642 27.09586 21.98137 22.18338 42.12429 22.10889 11.54615
##  [665] 28.83119 10.67663 14.04634 21.30998 41.83330 29.08432 26.00233 15.53437
##  [673] 31.58462 39.91766 30.56574 39.64737 14.19187 17.11004 10.46721 22.40423
##  [681] 18.31199 18.60682 11.76519 21.05582 31.09205 27.33463 25.19599 12.64991
##  [689] 23.83577 48.61585 21.31300 24.59027 48.02159 22.15351 35.03983 47.57854
##  [697] 42.29727 36.71147 45.26270 24.06397 41.07614 25.61490 45.08669 15.32588
##  [705] 45.35978 11.19607 28.38122 20.31408 26.41239 16.31049 28.23948 49.37193
##  [713] 22.91167 11.04831 32.97699 25.96734 22.20121 32.76606 15.29417 19.55654
##  [721] 46.26955 27.56373 40.22805 42.70565 33.08072 11.33208 27.51793 15.59507
##  [729] 33.88137 38.49539 34.01022 31.03170 17.10947 36.57438 11.72725 23.09397
##  [737] 19.52956 14.69452 47.22519 32.53463 35.21956 44.16470 17.86604 32.06644
##  [745] 43.03414 19.25109 10.62864 44.65561 23.16971 16.27141 19.08379 17.94805
##  [753] 23.45586 39.13448 44.15840 47.95349 25.99847 29.45006 14.31370 35.11234
##  [761] 14.79931 29.33408 30.76254 25.87042 14.97726 35.03405 13.35075 22.88648
##  [769] 44.21605 49.49993 32.72752 16.99750 47.06357 12.02521 24.42989 44.06687
##  [777] 12.70775 13.08334 30.50628 39.84034 46.85402 12.48447 44.30411 35.93477
##  [785] 18.32929 48.97751 24.04643 10.08475 11.03753 19.42248 10.82263 33.77195
##  [793] 21.89191 35.65818 16.61829 10.36235 35.34844 17.19019 38.00896 26.87626
##  [801] 15.16631 27.82420 41.14309 32.51616 44.01961 34.36954 13.63904 47.07731
##  [809] 11.58580 15.53821 29.02105 32.36626 21.73556 39.16403 39.31940 49.75207
##  [817] 19.44940 15.86725 41.45952 16.97542 28.08561 47.28937 33.06525 27.34050
##  [825] 37.62498 17.02336 23.30111 44.41470 34.51697 42.36411 14.37863 35.36117
##  [833] 33.75241 15.00425 39.35180 16.02909 23.78789 28.80025 31.82650 10.92687
##  [841] 24.94661 22.73388 33.20907 21.20311 31.92080 17.19388 13.11890 23.76030
##  [849] 21.00076 11.70310 28.59006 34.62648 12.65539 22.21578 17.68706 39.70960
##  [857] 30.08936 26.11030 13.15962 46.05972 44.40177 33.00209 11.76152 36.76405
##  [865] 46.97142 29.50200 24.85851 22.59976 39.69360 36.04488 45.95028 33.56966
##  [873] 23.69351 43.91350 40.73148 23.44560 37.14117 10.58281 35.31687 30.44480
##  [881] 22.79294 21.50947 28.25542 27.16390 35.88457 16.49175 21.95856 22.89584
##  [889] 33.00086 48.72465 39.16746 31.45462 12.54681 14.67541 40.08440 47.63276
##  [897] 47.44541 42.90436 25.79312 25.41666 40.68693 19.95595 23.59338 21.08476
##  [905] 44.35481 21.44524 19.87442 34.31347 32.75311 26.46460 36.15258 10.41593
##  [913] 30.26051 23.43579 33.89800 36.83865 24.53585 25.53231 23.77527 17.04084
##  [921] 25.70030 43.79707 44.92327 34.88163 42.12103 36.08037 49.89901 32.64015
##  [929] 33.42146 19.92324 20.91051 35.79326 31.34308 27.51101 12.96382 47.67629
##  [937] 29.08384 30.82226 29.54901 27.15143 49.73808 15.09805 46.49029 12.40904
##  [945] 14.46304 28.75647 29.58517 24.02672 40.99692 47.87751 41.65769 30.41118
##  [953] 13.15350 23.38323 24.65067 28.74799 31.91837 49.03826 12.38211 24.58407
##  [961] 48.77162 38.39556 19.59056 23.16804 31.86224 28.81260 22.89460 35.67335
##  [969] 25.65892 40.66273 19.29138 33.42923 34.70252 29.86694 37.81924 33.28449
##  [977] 32.08511 41.87091 30.00932 27.22907 43.28048 45.19238 14.75133 39.39847
##  [985] 25.95129 12.66380 23.19830 43.58590 36.35777 28.49535 39.33547 44.38737
##  [993] 22.99299 49.28323 21.83815 35.10447 38.06962 37.08826 22.84372 35.53003

2

Cálculo da média, mediana e desvio padrão de u1.

# média, mediana e desvio padrão de u1
umedia <- mean(u1)
umediana <- median(u1)
udp <- sd(u1)

umedia; umediana; udp
## [1] 29.69041
## [1] 29.26632
## [1] 11.70415

A distribuição teórica de u1 é uniforme(10, 50).

# média, mediana e desvio padrão teóricos de u1
uMu <- (10+50)/2
uMediana <- (10+50)/2
uSigma2 <- sqrt(((50-10)^2)/12)

uMu; uMediana; uSigma2
## [1] 30
## [1] 30
## [1] 11.54701

3

# Histograma de u1
hist(u1, probability = T,
     main = "Histograma de u1")
curve(dunif(x, 10, 50), add = T, col = "red") # curva da uniforme(10, 50) para comparar

5 Implementar um gerador de variáveis aleatórias Bernoulli

  • DESCRIÇÃO: Use uma transformação de variáveis para gerar uma sequencia de Bernoulli a partir de uma sequencia de variáveis uniforme unitárias.

5.1 Tarefas

  1. Implemente inicialmente a V.A. Bernoulli com probabilidade de sucesso \(p = 1/2\) da seguinte forma \(X_i=I(U_i\leq p)\), com \(U_i\thicksim U(0,1)\), \(i = 1,..., N\).
  2. Implemente o teste de runs (ou teste de sequências) para verificar a independência dos números.
  3. Verifique a média e a variância dos números gerados.

5.2 Respostas

1

g_bern <- function(n, p=0.5){
  x <- numeric(n) # Vetor para amazenar os números
  for (i in 1:n){
    u <- runif(1) # gera um valor diferente entre 0 e 1 a cada ciclo
    
    # se u<=p então retorna 1, caso contrário retorna 0
    x[i] <- ifelse(u <= p, 1, 0)
  }
  return(x)
}

Geração de 1000 bernoullis com p=0.5.

set.seed(548254)
npa5 <- g_bern(n=1000, p=0.5); npa5
##    [1] 0 1 0 0 1 0 0 0 1 0 1 1 1 0 1 1 1 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 1 0 0 1
##   [38] 0 0 0 1 1 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0 1 1
##   [75] 0 0 1 0 1 1 1 0 1 1 1 1 0 1 0 0 0 1 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 0 1 1 0
##  [112] 1 0 1 1 0 0 1 0 1 1 0 0 1 0 0 0 0 1 0 1 1 1 0 1 0 0 0 1 1 1 0 1 0 1 1 0 1
##  [149] 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 0 0 1 0 1 1 1 1 1 1 0 1 0 0 1 1 0 0 0 0 0 1
##  [186] 0 1 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 1 1 1 1 0 1 1 0 0 1 0 0 1 0 0 1
##  [223] 0 0 0 1 1 1 1 0 0 1 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 1 1
##  [260] 0 0 1 1 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 0 1 0 1 1
##  [297] 1 1 1 1 0 0 0 1 1 1 0 1 0 1 1 0 1 0 0 0 0 1 1 1 1 0 1 0 0 1 0 1 0 0 1 1 0
##  [334] 0 0 1 1 1 1 1 1 0 0 1 0 0 0 1 1 1 1 0 1 1 1 1 1 0 1 1 0 1 0 1 1 0 1 0 0 1
##  [371] 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1 1 0 0 0 1 1 1 0 1 1 1 1 0 0
##  [408] 0 1 1 1 1 0 1 0 0 0 1 1 0 1 1 0 0 1 1 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 1
##  [445] 1 0 0 0 1 1 1 0 1 0 0 1 0 0 1 0 1 1 0 1 1 0 0 1 1 1 0 1 1 1 0 1 0 0 1 1 1
##  [482] 1 1 1 0 1 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0
##  [519] 1 1 0 1 0 1 1 1 1 0 0 0 0 0 1 0 1 0 1 1 1 0 1 0 1 1 1 1 0 0 1 0 1 0 0 1 1
##  [556] 1 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 0 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 1 1 0 1 0
##  [593] 1 1 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 1 0 1 0 0 0 1 1 1 0 1 1 0 0 1
##  [630] 1 0 1 0 1 0 1 0 1 1 1 0 1 1 0 1 0 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 1 0 0 1
##  [667] 1 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 1 1 1 1 1
##  [704] 0 1 1 0 0 1 0 1 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 0
##  [741] 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1 0 1 1 1 0 1 0 0 0 1 1 1 1 0 1 1 1 1
##  [778] 1 0 0 1 0 0 1 1 1 1 1 0 1 0 1 1 1 0 1 0 0 0 0 1 1 1 1 1 0 1 0 1 0 0 1 1 1
##  [815] 1 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 1 1 1 1
##  [852] 1 0 0 1 1 0 1 0 1 1 0 1 0 0 0 1 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 0 0 1
##  [889] 1 1 1 0 0 0 1 0 1 0 1 1 1 1 0 1 0 1 1 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1 1 0 0
##  [926] 0 1 1 1 0 1 0 0 0 1 1 1 1 1 0 0 1 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 1 1 1 0 1
##  [963] 0 1 1 1 0 0 0 1 0 1 1 1 0 0 1 0 0 1 1 0 1 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1
## [1000] 0

2

# install.packages("tseries")
library(tseries)

# Teste de sequência
runs.test(as.factor(npa5))
## 
##  Runs Test
## 
## data:  as.factor(npa5)
## Standard Normal = 1.3353, p-value = 0.1818
## alternative hypothesis: two.sided

Como o p-value é maior que 0.05, então não há evidências suficientes para rejeitar a hipótese de que os dados são independentes.

3

Média e variância dos números gerados.

berMedia <- mean(npa5)
berVariancia <- var(npa5)

berMedia; berVariancia
## [1] 0.523
## [1] 0.2497207

A distribuição teórica dos dados é bernoulli com p=0.5.

berMu <- 0.5
berSigma2 <- 0.5*0.5

berMu; berSigma2
## [1] 0.5
## [1] 0.25

6 Implementar um gerador de variáveis aleatórias Binomial

  • DESCRIÇÃO: Use o resultado que diz que; a soma de n de distribuições Bernoulli(p) é uma variável aleatória Binomial de parâmetros com média \(n · p\) e variância \(n · p · (1 − p)\).

6.1 Tarefas

  1. Implemente inicialmente com o objetivo de obter uma distribuição Binomial(n = 2, p = 3/4).
  2. Implemente uma função que gere uma amostra de tamanho N de uma distribuição Binomial(n = 2, p = 3/4).
  3. Verifique a média e a variância dos números gerados.

6.2 Respostas

1

# Matriz com 2 colunas de 1000 bernoullis
matriz_ber <- matrix(g_bern(2*1000, 3/4), ncol = 2)

# Soma, linha por linha, de cada coluna
rowSums(matriz_ber)
##    [1] 1 2 2 2 0 1 1 1 2 1 2 0 1 1 1 2 2 2 2 1 1 1 2 1 2 1 1 1 2 2 2 2 2 2 1 2 2
##   [38] 1 2 2 2 1 2 1 2 2 1 1 2 1 0 2 2 1 1 1 2 2 1 1 1 2 1 0 2 1 1 2 2 2 2 1 0 1
##   [75] 1 2 1 1 0 2 2 1 2 0 1 1 1 1 1 1 2 1 1 2 2 1 1 1 2 2 2 2 2 1 1 1 1 2 1 1 2
##  [112] 1 1 1 2 1 1 0 1 2 2 2 2 1 1 1 2 1 1 2 2 1 1 2 1 1 1 1 1 2 2 2 2 2 2 1 1 1
##  [149] 2 1 2 1 2 0 0 1 1 1 1 2 2 2 0 2 1 1 1 2 1 1 2 1 2 1 1 2 1 2 0 1 2 2 1 2 1
##  [186] 2 2 2 2 1 2 2 1 2 2 2 1 1 2 1 1 2 2 1 1 1 1 1 2 1 0 1 2 1 2 2 1 2 0 1 2 2
##  [223] 1 2 0 2 2 2 2 1 1 1 2 2 1 2 2 2 2 2 2 1 1 1 2 1 2 2 1 2 2 2 2 2 2 0 1 2 1
##  [260] 2 1 1 2 2 1 2 2 0 2 1 1 2 2 2 2 2 2 1 2 1 2 1 1 2 2 2 2 1 2 1 2 2 1 2 1 2
##  [297] 2 1 1 2 0 1 2 2 2 0 1 1 1 2 2 2 1 1 1 1 2 2 2 2 0 2 1 2 2 2 0 2 1 2 2 1 2
##  [334] 2 2 2 2 2 2 0 2 1 1 0 2 1 2 1 1 1 2 1 2 2 2 1 1 2 2 2 1 2 2 2 1 1 2 2 2 1
##  [371] 1 1 2 1 2 2 1 2 2 0 1 2 1 1 1 2 2 1 1 1 1 2 1 1 2 1 1 2 1 1 2 0 2 1 2 2 2
##  [408] 2 1 2 1 2 0 1 2 2 2 2 1 2 0 1 1 0 2 1 2 1 1 1 2 2 1 1 2 1 0 2 2 2 1 1 2 2
##  [445] 1 2 0 2 2 1 2 2 1 1 2 0 2 2 2 1 1 2 2 1 1 0 1 1 2 2 2 2 2 1 1 2 2 2 2 1 0
##  [482] 2 1 1 2 2 2 2 1 2 2 1 1 2 1 2 2 1 2 2 2 2 2 2 2 1 2 1 0 1 1 2 2 1 2 2 1 2
##  [519] 2 1 0 2 2 1 2 1 2 2 0 1 1 2 2 2 2 1 2 2 2 2 2 2 1 1 0 2 1 2 1 2 0 2 0 2 1
##  [556] 0 1 2 2 2 2 1 0 2 1 1 1 2 1 2 2 2 2 1 2 1 2 1 1 1 0 2 2 1 1 1 2 2 2 1 1 1
##  [593] 2 2 2 2 1 0 1 2 2 1 2 2 1 1 2 1 1 1 2 1 1 1 1 2 2 1 1 2 1 1 2 2 1 2 2 2 2
##  [630] 2 2 1 0 1 2 1 2 2 2 1 0 1 2 1 2 2 2 1 2 2 2 2 0 2 1 0 2 2 1 1 1 2 1 1 1 2
##  [667] 1 1 1 1 0 2 1 1 1 2 1 1 2 2 2 2 2 0 1 1 2 2 0 2 0 2 1 1 2 1 1 1 1 2 1 1 2
##  [704] 2 2 2 1 1 2 2 1 2 1 2 1 1 2 2 1 2 2 2 2 1 1 1 1 2 2 2 2 2 2 1 1 1 2 1 1 1
##  [741] 0 1 1 2 2 2 2 1 2 2 2 2 1 2 1 2 2 2 2 1 2 2 2 1 2 2 2 2 2 1 1 2 2 1 2 2 2
##  [778] 1 2 2 2 1 1 2 1 1 2 2 2 1 2 2 2 2 2 2 1 1 2 2 2 2 1 2 2 2 2 2 2 2 2 1 2 1
##  [815] 1 1 0 2 2 2 1 2 1 1 2 2 1 0 2 1 1 2 2 1 2 1 2 2 1 2 1 1 1 1 1 2 2 1 1 1 1
##  [852] 1 2 1 2 2 2 2 2 2 2 1 2 1 2 1 1 0 1 0 1 2 1 2 2 2 2 1 1 2 2 2 2 2 1 2 1 2
##  [889] 1 2 2 1 2 1 2 2 1 2 2 2 1 2 2 2 2 1 2 2 2 1 1 1 1 1 2 2 2 2 1 2 2 2 2 1 2
##  [926] 2 1 2 2 2 2 0 2 2 1 2 1 1 2 2 2 2 1 2 1 2 1 0 2 2 1 1 2 1 1 0 0 2 2 2 2 1
##  [963] 2 2 1 0 2 1 2 1 2 2 1 2 2 1 2 2 1 2 2 0 0 2 0 2 2 2 1 1 2 2 2 2 2 1 2 2 2
## [1000] 1

2

# Função que gera, a partir da soma de n bernnoulis(p), uma binomial(n, p).
g_binomial <- function(N, n, p){
  matriz_ber <- matrix(g_bern(n*N, p), ncol = n)
  return(rowSums(matriz_ber))
}

# Geração de uma amostra de 1000 números da Binomial(n =2, p = 3/4)
npa6 <- g_binomial(N=1000, n=2, p=3/4); npa6
##    [1] 2 2 1 2 2 1 2 1 2 2 2 2 1 2 1 1 1 2 2 1 2 1 2 1 2 2 0 2 2 2 2 2 1 1 2 0 1
##   [38] 2 2 2 2 2 2 2 1 2 2 1 1 1 1 2 1 0 1 1 2 2 2 1 2 1 1 2 2 2 2 1 1 2 2 2 1 1
##   [75] 1 2 0 2 1 2 2 2 2 1 2 1 2 2 2 1 1 1 2 2 2 2 1 2 2 1 2 2 1 1 1 2 1 2 2 2 2
##  [112] 2 1 1 2 2 0 2 1 1 1 1 2 2 2 1 1 1 1 2 2 2 1 2 0 1 1 1 2 2 2 2 2 1 2 2 0 2
##  [149] 1 2 2 1 2 0 1 2 1 2 1 2 1 2 1 2 2 2 2 2 1 2 2 2 2 1 2 0 2 1 1 1 1 1 2 2 2
##  [186] 2 2 2 1 1 2 2 1 2 2 0 2 2 2 1 2 1 2 2 2 2 1 1 2 1 2 1 0 2 2 1 1 1 1 1 2 1
##  [223] 2 2 2 1 1 0 1 2 2 1 2 2 1 2 2 0 2 1 2 1 1 1 2 1 2 2 1 1 1 1 1 1 2 1 2 2 1
##  [260] 2 1 1 1 0 2 2 2 1 2 2 1 2 0 2 2 1 2 1 1 2 2 2 2 2 2 2 2 2 2 2 0 1 2 2 2 2
##  [297] 2 1 2 2 2 2 1 2 2 1 2 2 2 1 2 2 1 1 1 2 1 2 0 2 2 2 1 1 1 1 2 2 2 2 1 1 2
##  [334] 0 1 2 1 2 2 2 2 2 2 2 2 1 2 1 2 1 2 2 1 2 1 0 2 2 1 0 1 1 2 2 2 1 2 2 2 2
##  [371] 2 2 1 2 1 1 2 1 1 2 2 2 2 1 2 2 2 1 1 2 2 2 0 2 2 2 2 2 2 1 2 1 2 1 0 1 2
##  [408] 2 2 2 2 1 1 2 2 2 2 2 2 1 1 1 2 2 1 1 2 1 1 0 2 2 2 2 0 1 1 2 1 0 2 1 1 2
##  [445] 0 2 1 2 2 2 0 2 1 2 2 1 2 1 1 1 2 1 1 2 2 1 1 1 2 2 1 2 2 1 2 2 2 1 1 1 1
##  [482] 2 1 2 2 2 1 2 0 2 1 1 2 0 0 1 0 2 2 0 2 2 2 1 2 1 2 1 1 1 2 1 1 0 1 1 2 1
##  [519] 1 2 1 1 2 2 2 0 2 1 2 2 2 0 1 2 2 2 2 2 1 1 1 2 2 2 0 1 2 1 2 2 1 1 2 1 1
##  [556] 0 1 1 2 1 1 2 1 2 1 2 2 1 1 2 2 2 2 2 1 2 2 2 0 2 2 2 2 1 1 2 2 1 1 2 1 2
##  [593] 1 0 2 2 1 2 1 2 1 2 2 1 1 1 1 2 2 1 2 2 2 1 1 1 1 1 1 2 1 1 2 2 1 2 1 2 2
##  [630] 0 1 2 1 2 2 1 1 2 1 2 2 2 2 2 2 2 1 1 2 2 2 0 1 2 2 2 1 2 1 2 2 2 2 1 1 2
##  [667] 1 2 2 2 1 1 0 2 2 2 0 2 2 1 1 1 2 2 1 2 1 1 2 2 2 2 1 0 0 1 1 1 2 1 2 1 2
##  [704] 2 2 1 2 2 2 2 2 0 2 1 1 1 1 2 1 2 2 1 2 2 2 2 2 2 1 2 1 2 1 2 1 2 1 2 2 2
##  [741] 2 2 1 1 1 2 2 1 0 2 1 1 2 2 2 2 2 1 1 1 1 2 2 2 2 2 2 2 2 2 1 2 2 2 1 1 1
##  [778] 1 2 0 1 2 2 2 2 1 1 1 2 0 2 1 1 2 2 2 2 2 2 1 2 1 0 2 2 0 2 2 2 1 2 1 1 2
##  [815] 2 1 2 2 2 2 2 2 2 1 2 2 2 1 2 0 1 2 1 1 1 2 2 2 1 2 2 1 2 1 2 2 2 2 1 2 2
##  [852] 1 1 2 1 2 1 2 2 2 2 2 1 1 2 0 2 1 1 2 1 2 1 0 1 1 2 2 2 1 2 2 1 2 2 1 2 2
##  [889] 2 2 2 2 1 1 2 1 2 1 2 2 1 1 2 2 0 2 2 1 2 1 1 1 1 1 2 2 1 1 1 2 2 1 2 1 2
##  [926] 1 1 2 2 2 2 2 2 2 1 1 2 2 2 1 1 2 2 2 2 2 2 2 2 2 2 1 2 0 1 2 2 1 1 1 2 0
##  [963] 2 2 2 1 1 2 2 2 2 2 2 2 2 2 0 1 2 2 1 1 2 2 2 1 1 2 2 2 1 1 1 1 1 2 2 1 2
## [1000] 2

3

Cálculo da média e da variância da amostra da Binomial(2, 3/4).

binoMedia <- mean(npa6)
binoVar <- var(npa6)

binoMedia; binoVar
## [1] 1.51
## [1] 0.3662663

Cálculo da média e da variância teóricas da distribuição Binomial(2, 3/4).

binoMu <- 2*(3/4)
binoSigma2 <- 2*(3/4)*(1/4)

binoMu; binoSigma2
## [1] 1.5
## [1] 0.375

7 Simular um Processo de Controle de Qualidade até a Primeira Falha

  • DESCRIÇÃO: Em um processo de controle de qualidade, podemos simular a verificação de produtos até encontrar a primeira falha, usando variáveis uniformes para modelar a probabilidade de falha.

7.1 Tarefas

  1. Implemente um loop que simule um processo de verificação de produtos até encontrar a primeira falha
  2. Considere a probabilidade de falha como p = 0, 05.
  3. Registre o número de produtos verificados antes da primeira falha.
  4. Repita a simulação 1000 vezes e calcule a média do número de produtos verificados até a primeira falha.

7.2 Respostas

1

g_geom <- function(n, pfalha){
  x <- numeric(n) # vetor que vai armazenar a quantidade de sucessos até a primeira falha
  for (i in 1: n){
    repeat{
      u <- runif(1) # Um valor aleatório entre 0 e 1
      if (u<pfalha) # Se o valor aleatório entre 0 e 1 for menor que a probabilidade de falha,
                    # então encerra o processo pois houve falha
        break
      else
        x[i] <- x[i] + 1 # Caso contrário, conta o sucesso
    }
  }  
  return(x)
}

2

Definição da probabilidade de falha.

p <- 0.05

3

# Geração de 1 contagem de sucessos até a primeira falha com probabilidade de falha de 0.05.
set.seed(548254)
g_geom(1, p)
## [1] 4

4

Simulação de 1000 contagens de sucessos até a primeira falha.

# Geração de 1000 contagens de sucessos até a primeira falha com probabilidade de falha de 0.05.
set.seed(548254)
npa7 <- g_geom(1000, p); npa7
##    [1]   4  52   5   1  39   3  44   4  11  12   3   1   1   3  40  12   1   4
##   [19]  39  42  14   2   2  11  11   6  68   6  13  53   1  61  58  21  12   4
##   [37]  26  27   1   3  32   7   4   7  21  18  12   1  16   2   9   2  17  41
##   [55]  29   9  34   1  53   3   1  18  28   9  17  35   7  36   1  75  25  16
##   [73]  13   1   1 103  81  23  29  23  19   0   9  45  12   3   3   3   7  20
##   [91]   9  35   0   8   9  15  32   9  46   7   5   5   5  28  33   2  70  13
##  [109]   9  13  85  32  23   3  37  47   4   5  48   6  81   4  24   7   9  67
##  [127]   3  28  47   6  26  22  33   8  13   1  18   4  57  12  14  17  23   7
##  [145]  25  54  28  43   0  29  17   6   6  10  14   7  29   0   1  75   5   4
##  [163]  45  30   3  31  12   7  17  15  13  11   9   4   1   9   0   9  75  37
##  [181]  57  18  28   2  11  76  16  37   6  10  15   4  14  21   4   0   0   6
##  [199]  72   7   4   5  20   0  26  15  18  19  34  18  32  50   1  41  27  24
##  [217]  75  17   3  16   2   4  11  13   2  27  56  26   3  30   2   4  34   1
##  [235]   5  13  21  32  20  49   4   4   9  14  30   0  33  22   3   1   5   0
##  [253]   8   5  75  82  18   0   6   0  14   2   5   1   3  17   5  13  35  51
##  [271]  43   8   3  10  79  10  28  14  15  26   6  25   7  59   5   9   7   0
##  [289]  28  35  13  54   5  64  11  37  22  29  31   0   3   8  50  10  18  25
##  [307]   8   5   6   2  28   9   9   9   0  31   5   6   9  31   5   2  61  19
##  [325]   1   4  14   5  31  41   3  13  42   3  15  26  34  23   0  19  53  16
##  [343]  35 100   2  14   3   1   5  10  30   6  16   5  26   2  10   8  34   2
##  [361]   7  49  13  21  25   2   1  19  49  12   1  29  10   3  21  17  13  32
##  [379]   7  18   3   4  39  46  63   8  23  52  43  13   4  28  96   4   4   3
##  [397]  30  17   9   3   6   9  28   2  12  15  82   4  19  13   0  43  20  15
##  [415]   3   3  32  51  49   8   3   7   2  24  13  34  54   7  36  15   2  62
##  [433]   5   0  27  13  15   5  19   8   8   3   3  35  19   4   1   4  12  37
##  [451]  24   3   3   1   9   9  82  26   2  32  16   8  16   3  13  13   5  10
##  [469]  22   1  11   3   0   6   2   3   3  15   3   4   6  19   2   9  18  26
##  [487]  77  34  44  20   5   1  46   6  15  34   5   5  15  47   7  10   6   7
##  [505]   5  27   2   2   5  79   3  26   7   4  67   8   0  23  12  20   2  71
##  [523]  16   2   9   0  14  10  39   5   3   6   3   8  30   3  16  11   1  28
##  [541]   8   3   0  23  18   5  30   1   2  68  25  15  89  23   2  28  30   8
##  [559]  12   7  21   7   4   2  32  33   6   3   6  53   0  26   6   7  43   3
##  [577]  15  83  13   0   5   2   2   8  50   9  45  24   1  23   3   3  10   6
##  [595]  10  15   5  38   0   6  20   1  71   4   3  60  35  30  20  43  19   4
##  [613]  29  23   4  13   5  42  43   2  15  13  22  19  33  37   9  24  21  63
##  [631]  10   2   3  33  19   4  17   3  25  22  21  18  26  13   4   7   7   4
##  [649]   1   0  10  75   5  18  12   4  18  19  19   8   0   6  17  41   0   5
##  [667]   7   3  16   5  15  23   2  34  44   3   9   2   8   6  15   1   4  17
##  [685]  13  20  24  25  58  40   1  53  47  14  37  28  14   7   2  16   6   0
##  [703]   2  14  24  22  36   9   2  15   3  12   9   0   5   6  71  32  14  41
##  [721]   5   5  21   3  11  25  42  13  24  15  29  16   7  11   0  34  36   5
##  [739]   5   1  12  40   0  74   2  23   5  21  83  16   6  20  38  14   1  17
##  [757]   3   4   5   5   0  11  43  17   4   7   9  39  32   0  13  39  11  16
##  [775]   1   3  42  20  14   9  40  31  31   2   0  32   1   8  27  29  50  24
##  [793]  20  14  12   7   5   2   3   8  60  16  10   6  22   7  17  15  78  32
##  [811]   4  11  20  29   6   1   5  24  17  23  12   0   1  52  11  60  14  15
##  [829]   1  76  33  36  14   1  13  35  26   5   4  13   1   4   9  52  21  12
##  [847]  40   9  21  12   4  13  14   8  16  28   3   2  10  39  25  10  26   7
##  [865]   5   3  28  51   4  11   2  39  25  16  14  66  31  11  34  39  31   1
##  [883]  18   5  28   7  22  42   8  19  13   4   3  38  18   2  42  40  37  28
##  [901]   8  94   5  22  46   6   2  49   3   0  39  40  22   6  25   2  30  22
##  [919]  12   0   7   1   1  49  41  15  30   0   4   6  12   8  18   3 111  55
##  [937]  22   3  27  14  28   2  37  21   9   1   3  89  35   7  30   1   2   6
##  [955]  11   2   1   5   0  30   3   0  22   3   3   4   2  27  30  20   4  24
##  [973]  35  14   1  22  25  43   4  15  79  12   8   9  10  10   7  39  63  26
##  [991]  16  13  12  24   0   1  39  13  20   9

Média e a variância dos resultados das simulações feitas.

geoMedia <- mean(npa7)
geoVar <- var(npa7)

geoMedia; geoVar
## [1] 18.475
## [1] 361.3547

A distribuição teórica dos dados é uma Geométrica(0.05).

geoMu <- (1-p)/p
geoSigma2 <- (1-p)/(p^2)

geoMu; geoSigma2
## [1] 19
## [1] 380
LS0tDQp0aXRsZTogfA0KICAhW10oaHR0cHM6Ly9pLmltZ3VyLmNvbS9VaUJDSE0yLmpwZyAiSm9uYXMgRnJlaXJlIFJpYmVpcm8iKXt3aWR0aD0yMDBweCBzdHlsZT0iZGlzcGxheTogYmxvY2s7IG1hcmdpbjowIGF1dG87In0NCiAgTsO6bWVyb3MgUHNldWRvLWFsZWF0w7NyaW9zDQphdXRob3I6IHwNCiAgSm9uYXMgRnJlaXJlIFJpYmVpcm9cDQogIG1hdHLDrWN1bGEgNTQ4MjU0DQpkYXRlOiAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclZCBkZSAlQiBkZSAlWScpYCINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0aGVtZToNCiAgICAgIGJvb3Rzd2F0Y2g6IG1pbnR5DQogICAgYW5jaG9yX3NlY3Rpb25zOiB0cnVlDQogICAgY2l0YXRpb25fcGFja2FnZTogYmlibGF0ZXgNCiAgICBmaWdfY2FwdGlvbjogdHJ1ZQ0KICAgIGhpZ2hsaWdodDogdGFuZ28NCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZGVwdGg6IDMNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgdG9jX2Zsb2F0OiB0cnVlDQogICAgbnVtYmVyX3NlY3Rpb25zOiB0cnVlDQogICAga2VlcF9tZDogdHJ1ZQ0KLS0tDQoNCiMgSW1wbGVtZW50YXIgdW0gR2VyYWRvciBMaW5lYXIgQ29uZ3J1ZW50ZSAoR0xDKQ0KDQotICoqREVTQ1JJw4fDg086KiogTyBHTEMgw6kgdW0gbcOpdG9kbyBjbMOhc3NpY28gcGFyYSBnZXJhciBuw7ptZXJvcyBwc2V1ZG8tYWxlYXTDs3Jpb3MgYmFzZWFkbyBuYSBmw7NybXVsYTogJCRYX3tuKzF9PShhLlhfbiArIGMpXCBtb2RcIG0kJA0KZW0gcXVlICRYXzAkIMOpIGEgc2VtZW50ZSBpbmljaWFsLCAkYSQgw6kgbyBtdWx0aXBsaWNhZG9yLCAkYyQgw6kgbyBpbmNyZW1lbnRvIGUgJG0kIMOpIG8gbcOzZHVsby4NCg0KIyMgVGFyZWZhcw0KMS4gSW1wbGVtZW50ZSBvIEdMQyBlbSBSIG91IFB5dGhvbiAoQ3JpZSB1bWEgZnVuw6fDo28pLg0KMS4gR2VyZSAxMDAwIG7Dum1lcm9zIGFsZWF0w7NyaW9zIGNvbSBkaWZlcmVudGVzIHZhbG9yZXMgZGUgYSwgYywgZSBtLg0KMS4gVmVyaWZpcXVlIGEgdW5pZm9ybWlkYWRlIGRvcyBuw7ptZXJvcyBnZXJhZG9zIHVzYW5kbyB1bSBoaXN0b2dyYW1hLg0KMS4gQ2FsY3VsZSBhIG3DqWRpYSBlIGEgdmFyacOibmNpYSBkb3MgbsO6bWVyb3MgZ2VyYWRvcyBlIGNvbXBhcmUgY29tIG9zIHZhbG9yZXMgdGXDs3JpY29zLg0KMS4gVGVzdGUgYSBpbmRlcGVuZMOqbmNpYSBkb3MgbsO6bWVyb3MgZ2VyYWRvcyB1c2FuZG8gbyB0ZXN0ZSBkZSBjb3JyZWxhw6fDo28uDQoxLiBBcHJlc2VudGUgZG9pcyBjb25qdW50b3MgZGlzdGludG9zIGRlIHBhcsOibWV0cm9zLCB1bSBxdWUgdHLDoXMgYm9hcyBwcm9wcmllZGFkZXMgZSBvdXRybyBxdWUgbsOjby4NCg0KIyMgUmVzcG9zdGFzIHsudGFic2V0IC50YWJzZXQtZmFkZX0NCiMjIyAxIHsudW5udW1iZXJlZH0NCmBgYHtyfQ0KZ2xjIDwtIGZ1bmN0aW9uKHNlZWQsIG4sIGE9MTY2NDUyNSwgYz0xMDEzOTA0MjIzLCBtPTJeMzIpew0KICB2YWxvcmVzIDwtIG51bWVyaWMobikgIyBEZWZpbmlyIG8gdmV0b3IgZGUgdGFtYW5obyBuIHBhcmEgcmVjZWJlciBvcyB2YWxvcmVzDQogIHZhbG9yZXNbMV0gPC0gc2VlZCAjIE8gcHJpbWVpcm8gdmFsb3Igw6kgYSBzZW1lbnRlDQogIA0KICBmb3IgKGkgaW4gMjoobisxKSl7ICMgT3MgdmFsb3JlcyBkYSBwb3Npw6fDo28gZGUgMiBhdMOpIG4rMSBzw6NvIG9idGlkb3MgcGVsYSBmw7NybXVsYSBkbyBHTEMNCiAgICB2YWxvcmVzW2ldIDwtICgoYSp2YWxvcmVzW2ktMV0pICsgYykgJSUgbQ0KICB9DQogIHJldHVybih2YWxvcmVzWzI6KG4rMSldL20pDQp9DQpgYGANCk9zIHZhbG9yZXMgZGUgcG9zacOnw6NvIGAyYCBhdMOpIGBuKzFgIHF1ZSBzZXLDo28gZ2VyYWRvcyBwZWxvIEdMQyBzw6NvIG8gcmVzdG8gZGEgZGl2aXPDo28gZW50cmUgYChhKnZhbG9yZXNbaS0xXSArIGMpYCBlIGBtYC4NCg0KDQojIyMgMiB7LnVubnVtYmVyZWQgLnRhYnNldCAudGFic2V0LWZhZGV9DQotICoqbToqKiBRdWFudG8gbWFpb3IgbyB2YWxvciBkZSBgbWAsIG1haXMgbG9uZ2Egc2Vyw6EgYSBzZXF1w6puY2lhIGFudGVzIHF1ZSBvcyBuw7ptZXJvcyBjb21lY2VtIGEgc2UgcmVwZXRpci4gRGVzc2EgZm9ybWEsIG8gdmFsb3IgZG8gbcOzZHVsbyBkZXZlIHNlciBncmFuZGUuDQotICoqYToqKiBTZSBgbWAgZm9yIHVtYSBwb3TDqm5jaWEgZGUgMiwgcGFyYSBnYXJhbnRpciB1bSBib20gcGVyw61vZG8gY29tcGxldG8sIHVtYSBlc2NvbGhhIGNvbXVtIMOpIHNlbGVjaW9uYXIgdW0gYGFgIHRhbCBxdWUgbyByZXN0byBkYSBkaXZpw6NvIHBvciA0IHNlamEgMS4gU2UgZXNzYSBjb25kacOnw6NvIG7Do28gZm9yIHNhdGlzZmVpdGEsIG8gZ2VyYWRvciBwb2RlIHRlciB1bSBwZXLDrW9kbyBtdWl0byBjdXJ0byBvdSByZXBldGlyIHZhbG9yZXMgZGUgZm9ybWEgcHJldmlzw612ZWwuDQotICoqYzoqKiBQYXJhIGdhcmFudGlyIHF1ZSBvIGdlcmFkb3IgdGVuaGEgdW0gcGVyw61vZG8gY29tcGxldG8sIG8gaW5jcmVtZW50byBgY2AgZGV2ZSBzZXIgcmVsYXRpdmFtZW50ZSBwcmltbyBhbyBtw7NkdWxvIGBtYC4NCg0KIyMjIyBwYXJhbWV0cm9zXzAgey51bm51bWJlcmVkfQ0KYGBge3J9DQpzZWVkIDwtIDU0ODI1NA0KbiA8LSAxMDAwDQphMCA8LSAxNjY0NTI1DQpjMCA8LSAxMDEzOTA0MjIzDQptMCA8LSAyXjMyDQoNCmdsYyhzZWVkLCBuLCBhMCwgYzAsIG0wKQ0KYGBgDQoNCiMjIyMgcGFyYW1ldHJvc18xIHsudW5udW1iZXJlZH0NCmBgYHtyfQ0Kc2VlZCA8LSA1NDgyNTQNCm4gPC0gMTAwMA0KYTEgPC0gMTY2NDUyNQ0KYzEgPC0gMTAxMzkwNDIwICMgYyBxdWUgbsOjbyDDqSByZWxhdGl2YW1lbnRlIHByaW1vIGFvIG0NCm0xIDwtIDJeMTAgIyBtIHBlcXVlbm8NCg0KZ2xjKHNlZWQsIG4sIGExLCBjMSwgbTEpDQoNCg0KcGVyaW9kIDwtIGxlbmd0aCh1bmlxdWUoZ2xjKHNlZWQsIG4sIGExLCBjMSwgbTEpKSk7IHBlcmlvZA0KYGBgDQoNCiMjIyMgcGFyYW1ldHJvc18yIHsudW5udW1iZXJlZH0NCmBgYHtyfQ0Kc2VlZCA8LSA1NDgyNTQNCm4gPC0gMTAwMA0KYTIgPC0gMTY2NDUyMCAjIGEgcXVlIG7Do28gdGVtIHJlc3RvIG5hIGRpdmlzw6NvIHBvciA0DQpjMiA8LSAxMDEzOTA0MjIzDQptMiA8LSAyXjMyDQoNCmdsYyhzZWVkLCBuLCBhMiwgYzIsIG0yKQ0KYGBgDQoNCiMjIyMgcGFyYW1ldHJvc18zIHsudW5udW1iZXJlZH0NCmBgYHtyfQ0Kc2VlZCA8LSA1NDgyNTQNCm4gPC0gMTAwMA0KYTMgPC0gMTY2NDUyNQ0KYzMgPC0gMTAxMzkwNDIyMw0KbTMgPC0gMl40ICMgbSBwZXF1ZW5vDQoNCmdsYyhzZWVkLCBuLCBhMywgYzMsIG0zKQ0KYGBgDQoNCg0KIyMjIDMgey51bm51bWJlcmVkfQ0KYGBge3J9DQojIEdlcmHDp8OjbyBkZSBuIG7Dum1lcm9zIHBzZXVkby1hbGVhdMOzcmlvcw0KbnBhMSA8LSBnbGMoc2VlZCwgbiwgYTAsIGMwLCBtMCkNCg0KIyBIaXN0b2dyYW1hIGRvcyBuw7ptZXJvcyBnZXJhZG9zDQpoaXN0KG5wYTEsIHByb2JhYmlsaXR5ID0gVCwNCiAgICAgbWFpbiA9ICJIaXN0b2dyYW1hIGRvcyBOw7ptZXJvcyBQc2V1ZG8tQWxlYXTDs3Jpb3MiKQ0KY3VydmUoZHVuaWYoeCksIGFkZCA9IFQsIGNvbCA9ICJyZWQiKSAjIGN1cnZhIGRhIHVuaWZvcm1lKDAsIDEpIHBhcmEgY29tcGFyYXINCmBgYA0KDQojIyMgNCB7LnVubnVtYmVyZWR9DQoNCkPDoWxjdWxvIGRhIG3DqWRpYSBlIGRhIHZhcmnDom5jaWEgZG9zIG7Dum1lcm9zIGdlcmFkb3MuDQpgYGB7ciBjb2xsYXBzZT1UUlVFfQ0KWGJhcnJhIDwtIG1lYW4obnBhMSkNClZYIDwtIHZhcihucGExKQ0KDQpYYmFycmE7IFZYDQpgYGANCg0KDQpBIGRpc3RyaWJ1acOnw6NvIHRlw7NyaWNhIGRvcyBuw7ptZXJvcyBnZXJhZG9zIHBlbG8gR0xDIMOpIFVuaWZvcm1lIG5vIGludGVydmFsbyBkZSBgMGAgYXTDqSBgbS0xYCwgZGVzZGUgcXVlIG9zIHZhbG9yZXMgZGUgYGFgLCBgY2AsIGUgYG1gIHNlamFtIGVzY29saGlkb3MgYWRlcXVhZGFtZW50ZS4gQ29tbyBvcyBuw7ptZXJvcyBnZXJhZG9zIGZvcmFtIGRpdmlkb3MgcG9yIGBtYCwgZW50w6NvIGVsZXMgc2VndWVtIGEgZGlzdHJpYnVpw6fDo28gVW5pZm9ybWUgbm8gaW50ZXJ2YWxvIFswLCAxXS4NCmBgYHtyIGNvbGxhcHNlPVRSVUV9DQpNdSA8LSAoMSswKS8yDQpTaWdtYTIgPC0gKCgxLTApXjIpLzEyDQoNCk11OyBTaWdtYTINCmBgYA0KDQoNCiMjIyA1IHsudW5udW1iZXJlZH0NCmBgYHtyfQ0KIyBWZXJpZmljYcOnw6NvIGRhIGluZGVww6puZGVuY2lhIGRvcyBuw7ptZXJvcyBnZXJhZG9zDQphY2YobnBhMSwgbWFpbiA9ICJGdW7Dp8OjbyBkZSBBdXRvY29ycmVsYcOnw6NvIikNCmBgYA0KDQpPIGdyw6FmaWNvIGluZGljYSBxdWUgb3MgbsO6bWVyb3MgcHNldWRvLWFsZWF0w7NyaW9zIGdlcmFkb3Mgc8OjbyBpbmRlcGVuZGVudGVzLCBqw6EgcXVlIG9zIHZhbG9yZXMgZGUgYXV0b2NvcnJlbGHDp8OjbyBlc3TDo28gcHLDs3hpbW9zIGRlIDAuDQoNCiMjIyA2IHsudW5udW1iZXJlZH0NCk5hIHF1ZXN0w6NvIDIgZm9yYW0gZ2VyYWRvcyBkaWZlcmVudGVzIGNvbmp1bnRvcyBkZSBuw7ptZXJvcyBwc2V1ZG8tYWxlYXTDs3Jpb3MuIE9zIHBhcsOibWV0cm9zIGBhMGAsIGBjMGAgZSBgbTBgIGZvcmFtIG9zIHF1ZSBkZW1vbnN0cmFyYW0gYm9hcyBwcm9wcmllZGFkZXMgZGUgdW5pZm9ybWlkYWRlLCBpbmRlcGVuZMOqbmNpYSBlIHBlcsOtb2RvIGxvbmdvLg0KYGBge3J9DQojIHBhcsOibWV0cm9zIGNvbSBib2FzIHByb3ByaWVkYWRlcw0KYTAgPC0gMTY2NDUyNQ0KYzAgPC0gMTAxMzkwNDIyMw0KbTAgPC0gMl4zMg0KYGBgDQpPcyBwYXLDom1ldHJvcyBgYzFgLCBgYTJgIGUgYG0zYCBmb3JhbSBvcyBxdWUgYXByZXNlbnRhcmFtIHByb3ByaWVkYWRlcyBydWlucy4NCg0KYGBge3J9DQojIHBhcsOibWV0cm9zIGNvbSBwcm9wcmllZGFkZXMgcnVpbnMNCmMxIDwtIDEwMTM5MDQyMA0KYTIgPC0gMTY2NDUyMA0KbTMgPC0gMl40DQpnbGMoc2VlZCwgbiwgYTIsIGMxLCBtMykNCmBgYA0KT2JzZXJ2ZSBxdWUgbWVzbW8gYXVtZW50YW5kbyBvIHZhbG9yIGRlIG0sIG9zIG7Dum1lcm9zIGNvbnRpbnVhbSBjb20gcGVyw61vZG8gY3VydG8uDQpgYGB7cn0NCiMgcGFyw6JtZXRyb3MgY29tIHByb3ByaWVkYWRlcyBydWlucw0KYzEgPC0gMTAxMzkwNDIwDQphMiA8LSAxNjY0NTIwDQptMyA8LSAyXjMyDQpnbGMoc2VlZCwgbiwgYTIsIGMxLCBtMykNCmBgYA0KDQojIEltcGxlbWVudGFyIHVtIEdlcmFkb3IgZGUgVGF1c3dvcnRoZQ0KLSAqKkRFU0NSScOHw4NPOioqIE8gR2VyYWRvciBkZSBUYXVzd29ydGhlIMOpIGJhc2VhZG8gZW0gcmVnaXN0cm9zIGRlIGRlc2xvY2FtZW50byBsaW5lYXIgKExGU1IpLg0KDQojIyBUYXJlZmFzDQoxLiBJbXBsZW1lbnRlIG8gYWxnb3JpdG1vIGRlIFRhdXN3b3J0aGUgZW0gUiBvdSBQeXRob24gKENyaWUgdW1hIGZ1bsOnw6NvKS4NCjEuIEdlcmUgMTAwMCBuw7ptZXJvcyBhbGVhdMOzcmlvcyBlIHZlcmlmaXF1ZSBhIHVuaWZvcm1pZGFkZSBlIGEgY29ycmVsYcOnw6NvIGRvcyBuw7ptZXJvcyBnZXJhZG9zLg0KMS4gVGVzdGUgbyBwZXLDrW9kbyBkbyBnZXJhZG9yIHBhcmEgZ2FyYW50aXIgcXVlIHNlamEgbG9uZ28gbyBzdWZpY2llbnRlLg0KDQojIyBSZXNwb3N0YXMgey50YWJzZXQgLnRhYnNldC1mYWRlfQ0KIyMjIDEgey51bm51bWJlcmVkfQ0KTyBnZXJhZG9yIGZvaSBiYXNlYWRvIG5vIHBvbGluw7RtaW8gcHJpbWl0aXZvICR4XnAgK3heciArMSQuXA0KDQoqKlBhcsOibWV0cm9zIHV0aWxpemFkb3MgbmEgZnVuw6fDo286KioNCg0KLSAqKm4qKjogUXVhbnRpZGFkZSBkZSBuw7ptZXJvcyBwc2V1ZG8tYWxlYXTDs3Jpb3MgZGVzZWphZG9zLg0KLSAqKnAqKjogQ29tcHJpbWVudG8gZG8gcmVnaXN0cmFkb3IgZGUgZGVzbG9jYW1lbnRvIChuw7ptZXJvIGRlIGJpdHMgbmEgc2VxdcOqbmNpYSBpbmljaWFsKS4NCi0gKipyKio6IFBvc2nDp8OjbyBkZSBmZWVkYmFjayB1c2FkYSBuYSBnZXJhw6fDo28gZG9zIGJpdHMuDQotICoqbCoqOiBOw7ptZXJvIGRlIGJpdHMgZW0gY2FkYSBuw7ptZXJvIHBzZXVkby1hbGVhdMOzcmlvIGdlcmFkby4gRXNzZSBuw7ptZXJvIGRldmUgc2VyIHJlbGF0aXZhbWVudGUgcHJpbW8gYSAkMl5wIC0gMSQgZSBtYWlvciBkbyBxdWUgcCBwYXJhIHF1ZSBvIHBlcsOtb2RvIHNlamEgbcOheGltby4NCmBgYHtyIG1lc3NhZ2U9RkFMU0V9DQpsaWJyYXJ5KGNvbXBvc2l0aW9ucykgIyBOZWNlc3PDoXJpbyBwYXJhIGEgZnVuw6fDo28gdW5iaW5hcnkoKQ0KZ190YXVzd29ydGhlIDwtIGZ1bmN0aW9uKG4sIHA9OSwgcj00LCBsPTEwKXsNCiAgcSA8LSBwLXINCiAgTiA8LSBsKm4gIyBUb3RhbCBkZSBiaXRzIHF1ZSBzZXLDo28gZ2VyYWRvcw0KICANCiAgbGlzdGEwIDwtIHJlcCgxLCBwKSAjIHAgYml0cyBpZ3VhaXMgYSAxDQogIA0KICAjIExvb3AgcGFyYSBnZXJhciBvcyBiaXRzDQogIGZvciAoaSBpbiAxOk4pew0KICAgIG5iaXRfaSA8LSBsZW5ndGgobGlzdGEwKSArIDENCiAgICBuYml0IDwtIGlmZWxzZShsaXN0YTBbbmJpdF9pIC0gcF0gPT0gbGlzdGEwW25iaXRfaSAtIHArcV0sIDAsIDEpDQogICAgbGlzdGEwIDwtIGFwcGVuZChsaXN0YTAsIG5iaXQpDQogIH0NCiAgbGlzdGEwIDwtIGxpc3RhMFsocCsxKTpsZW5ndGgobGlzdGEwKV0gIyByZXRpcmFkYSBkb3MgcHJpbWVpcm9zIHAgYml0cw0KICANCiAgIyBEaXZpc8OjbyBkb3MgYml0cyBlbSBncnVwb3MgZGUgbCBiaXRzDQogIGxpc3RhX2JpdHMgPC0gc3BsaXQobGlzdGEwLCBjZWlsaW5nKHNlcV9hbG9uZyhsaXN0YTApIC8gbCkpDQogIA0KICAjIENvbnZlcnPDo28gZG9zIGJpdHMgZW0gbsO6bWVyb3MgcHNldWRvLWFsZWF0w7NyaW9zDQogIE5QQXMgPC0gTlVMTA0KICBmb3IgKGkgaW4gMTpsZW5ndGgobGlzdGFfYml0cykpew0KICAgICMgQSBmdW7Dp8OjbyB1bmJpbmFyeSBjb252ZXJ0ZSAgb3MgYml0cyBlbSBuw7ptZXJvcyBkZWNpbWFpcw0KICAgICMgQSBkaXZpc8OjbyBwb3IgMl5sIG5vcm1hbGl6YSBvcyBuw7ptZXJvcyBnZXJhZG9zDQogICAgTlBBIDwtICh1bmJpbmFyeShwYXN0ZShsaXN0YV9iaXRzW1tpXV0sIGNvbGxhcHNlPSIiKSkpIC8gMl5sDQogICAgTlBBcyA8LSBhcHBlbmQoTlBBcywgTlBBKQ0KICB9DQogIHJldHVybihOUEFzKQ0KfQ0KYGBgDQojIyMgMiB7LnVubnVtYmVyZWQgLnRhYnNldCAudGFic2V0LWZhZGV9DQoNCiMjIyMgR2VyYcOnw6NvIGRlIDEwMDAgbsO6bWVyb3MgcHNldWRvLWFsZWF0w7NyaW9zIHsudW5udW1iZXJlZH0NCg0KYGBge3J9DQojIEdlcmHDp8OjbyBkZSAxMDAwIG7Dum1lcm9zIHBzZXVkby1hbGVhdMOzcmlvcw0KbnBhMiA8LSBnX3RhdXN3b3J0aGUoMTAwMCk7IG5wYTINCmBgYA0KDQojIyMjIFZlcmlmaWNhw6fDo28gZGUgdW5pZm9ybWlkYWRley51bm51bWJlcmVkfQ0KDQpgYGB7cn0NCiMgVmVyaWZpY2HDp8OjbyBkYSB1bmlmb3JtaWRhZGUgY29tIGhpc3RvZ3JhbWENCmhpc3QobnBhMiwgcHJvYmFiaWxpdHkgPSBUUlVFKQ0KY3VydmUoZHVuaWYoeCksIGFkZCA9IFQsIGNvbCA9ICJyZWQiKSAjIENvbXBhcmHDp8OjbyBjb20gYSBkaXN0cmlidWnDp8OjbyB0ZcOzcmljYQ0KYGBgDQoNCk8gaGlzdG9ncmFtYSBlc3TDoSBtdWl0byBwcsOzeGltbyBkYSBjdXJ2YSB0ZcOzcmljYSwgbyBxdWUgaW5kaWNhIHF1ZSBvcyBuw7ptZXJvcyBnZXJhZG9zIHNlZ3VlbSBhIGRpc3RyaWJ1acOnw6NvIHVuaWZvcm1lKDAsIDEpLg0KDQojIyMjIFZlcmlmaWNhw6fDo28gZGUgY29ycmVsYcOnw6Nvey51bm51bWJlcmVkfQ0KYGBge3J9DQojIFZlcmlmaWNhw6fDo28gZGEgaW5kZXBlbmTDqm5jaWEgZG9zIG7Dum1lcm9zDQphY2YobnBhMiwgbWFpbiA9ICJGdW7Dp8OjbyBkZSBBdXRvY29ycmVsYcOnw6NvIikNCmBgYA0KDQpPcyB2YWxvcmVzIGRlIGF1dG9jb3JyZWxhw6fDo28gZXN0w6NvIHByw7N4aW1vcyBkZSB6ZXJvLCBvIHF1ZSBpbmRpY2EgcXVlIG9zIG7Dum1lcm9zIGdlcmFkb3Mgc8OjbyBpbmRlcGVuZGVudGVzLg0KDQojIyMgMyB7LnVubnVtYmVyZWQgLnRhYnNldCAudGFic2V0LWZhZGV9DQpQYXJhIGNhbGN1bGFyIG8gcGVyw61vZG8gZG9zIG7Dum1lcm9zIGdlcmFkb3MgZm9pIGZlaXRvIGEgY29udGFnZW0gZG9zIG7Dum1lcm9zIGRlIGZvcm1hIMO6bmljYSwgbyBxdWUgcmVzdWx0YSBuYSBxdWFudGlkYWRlIHRvdGFsIGRlIG7Dum1lcm9zIGRpc3RpbnRvcy4NCmBgYHtyfQ0KcGVyaW9kbyA8LSBsZW5ndGgodW5pcXVlKG5wYTIpKQ0KY2F0KCJQZXLDrW9kbyBkYSBzZXF1w6puY2lhOiIsIHBlcmlvZG8sICJuw7ptZXJvcyDDum5pY29zIikNCmBgYA0KDQpBcGVzYXIgZGUgc2VyZW0gZ2VyYWRvcyAxMDAwIG7Dum1lcm9zIHBzZXVkby1hbGVhdMOzcmlvcywgbyBwZXLDrW9kbyByZXN1bHRhbnRlIGZvaSA1MTEuIEEgZnVuw6fDo28gcmVzdWx0b3UgZW0gdW0gcGVyw61vZG8gZGUgJDJecC0xJC5cDQoNClBhcmEgYXVtZW50YXIgbyBwZXLDrW9kbyDDqSBuZWNlc3PDoXJpbyBlc2NvbGhlciB1bSB2YWxvciBkZSBgcGAgZ3JhbmRlIChvIHBvbGluw7RtaW8gZGV2ZSBjb250aW51YXIgc2VuZG8gcHJpbWl0aXZvKSBlIHVtIHZhbG9yIGRlIGBsYCBxdWUgc2VqYSByZWxhdGl2YW1lbnRlIHByaW1vIGEgJDJecC0xJCBlIHF1ZSBzZWphIG1haW9yIGRvIHF1ZSBgcGAuIA0KDQojIyMjIEdlcmHDp8OjbyBkb3MgbsO6bWVyb3MgY29tIHAgZ3JhbmRley51bm51bWJlcmVkfQ0KDQpWYW1vcyB1c2FyIG8gcG9saW7DtG1pbyBwcmltaXRpdm8gJHheezMxfSAreF57MTN9ICsxJC4gTyB2YWxvciBgcGAgaWd1YWwgYSAzMSB0ZW0gdW0gcGVyw61vZG8gbcOheGltbyBkZSAkMl57MzF9LTE9MjE0NzQ4MzY0NyQuDQoNCmBgYHtyfQ0KbnBhMl8xIDwtIGdfdGF1c3dvcnRoZSgxMDAwLCBwPTMxLCByPTEzLCBsPTMyKTsgbnBhMl8xDQpgYGANCg0KIyMjIyBWZXJpZmljYcOnw6NvIGRvIHBlcsOtb2Rvey51bm51bWJlcmVkfQ0KDQpgYGB7cn0NCnBlcmlvZG8gPC0gbGVuZ3RoKHVuaXF1ZShucGEyXzEpKQ0KY2F0KCJQZXLDrW9kbyBkYSBzZXF1w6puY2lhOiIsIHBlcmlvZG8sICJuw7ptZXJvcyDDum5pY29zIikNCmBgYA0KQ29tbyBlc3BlcmFkbywgbyBwZXLDrW9kbyByZXN1bHRvdSBubyB0b3RhbCBkZSBuw7ptZXJvcyBzb2xpY2l0YWRvcyBkZXZpZG8gYW8gYXVtZW50byBkZSBgcGAuICBFc3NlcyBuw7ptZXJvcyBzw7MgY29tZcOnYXLDo28gYSBzZSByZXBldGlyIGFww7NzIG8gbsO6bWVybyBkZSBwb3Npw6fDo28gJDJecC0xJC4NCg0KDQojIEltcGxlbWVudGFyIFRlc3RlcyBkZSBBbGVhdG9yaWVkYWRlIHBhcmEgVmVyaWZpY2HDp8Ojbw0KLSAqKkRFU0NSScOHw4NPOioqIFZlcmlmaXF1ZSBzZSBvcyBuw7ptZXJvcyBnZXJhZG9zIG5vcyBleGVyY8OtY2lvcyBhbnRlcmlvcmVzIHTDqm0gYm9hcyBwcm9wcmllZGFkZXMgZGUgYWxlYXRvcmllZGFkZS4NCg0KIyMgVGFyZWZhcw0KMS4gSW1wbGVtZW50ZSBvIHRlc3RlIGRlIGNoaS1xdWFkcmFkbyBwYXJhIHZlcmlmaWNhciBhIHVuaWZvcm1pZGFkZSBkb3MgbsO6bWVyb3MuDQoxLiBJbXBsZW1lbnRlIG8gdGVzdGUgZGUgYXV0b2NvcnJlbGHDp8OjbyBwYXJhIHZlcmlmaWNhciBhIGNvcnJlbGHDp8OjbyBlbnRyZSBvcyBuw7ptZXJvcyBnZXJhZG9zLg0KDQojIyBSZXNwb3N0YXMgey50YWJzZXQgLnRhYnNldC1mYWRlfQ0KIyMjIDEgey51bm51bWJlcmVkfQ0KIyMjIyBUZXN0ZSBkZSBVbmlmb3JtaWRhZGUgcGFyYSBvcyBuw7ptZXJvcyBnZXJhZG9zIHBlbG8gR2VyYWRvciBMaW5lYXIgQ29uZ3J1ZW50ZXsudW5udW1iZXJlZH0NCg0KYGBge3J9DQpvYnNlcnZhZG8gPC0gaGlzdChucGExLCBicmVha3MgPSAxMCwgcGxvdCA9IEZBTFNFKSRjb3VudHMNCmVzcGVyYWRvIDwtIHJlcCgxMDAsIDEwKQ0KDQojIFRlc3RlIFF1aS1RdWFkcmFkbw0KY2hpc3EudGVzdCh4ID0gb2JzZXJ2YWRvLCBwID0gZXNwZXJhZG8gLyBzdW0oZXNwZXJhZG8pKQ0KYGBgDQoNCkNvbW8gbyBgcC12YWx1ZWAgZm9pIG1haW9yIGRvIHF1ZSAwLjA1LCBlbnTDo28gbsOjbyBow6EgZXZpZMOqbmNpYXMgc3VmaWNpZW50ZXMgcGFyYSByZWplaXRhciBhIGhpcMOzdGVzZSBkZSBxdWUgb3MgbsO6bWVyb3MgZ2VyYWRvcyBzZWd1ZW0gYSBkaXN0cmlidWnDp8OjbyB1bmlmb3JtZSBubyBpbnRlcnZhbG8gKDAsIDEpLg0KDQojIyMjIFRlc3RlIGRlIFVuaWZvcm1pZGFkZSBwYXJhIG9zIG7Dum1lcm9zIGdlcmFkb3MgcGVsbyBHZXJhZG9yIGRlIFRhdXN3b3J0aGV7LnVubnVtYmVyZWR9DQoNCmBgYHtyfQ0Kb2JzZXJ2YWRvIDwtIGhpc3QobnBhMl8xLCBicmVha3MgPSAxMCwgcGxvdCA9IEZBTFNFKSRjb3VudHMNCmVzcGVyYWRvIDwtIHJlcCgxMDAsIDEwKQ0KDQojIFRlc3RlIFF1aS1RdWFkcmFkbw0KY2hpc3EudGVzdCh4ID0gb2JzZXJ2YWRvLCBwID0gZXNwZXJhZG8gLyBzdW0oZXNwZXJhZG8pKQ0KYGBgDQoNCkNvbW8gbyBgcC12YWx1ZWAgZm9pIG1haW9yIGRvIHF1ZSAwLjA1LCBlbnTDo28gbsOjbyBow6EgZXZpZMOqbmNpYXMgc3VmaWNpZW50ZXMgcGFyYSByZWplaXRhciBhIGhpcMOzdGVzZSBkZSBxdWUgb3MgbsO6bWVyb3MgZ2VyYWRvcyBzZWd1ZW0gYSBkaXN0cmlidWnDp8OjbyB1bmlmb3JtZSBubyBpbnRlcnZhbG8gKDAsIDEpLg0KDQoNCiMjIyAyIHsudW5udW1iZXJlZH0NCiMjIyMgVGVzdGUgZGUgQXV0b2NvcnJlbGHDp8OjbyBwYXJhIG9zIG7Dum1lcm9zIGdlcmFkb3MgcGVsbyBHZXJhZG9yIExpbmVhciBDb25ncnVlbnRley51bm51bWJlcmVkfQ0KYGBge3J9DQojIFZlcmlmaWNhw6fDo28gZGEgaW5kZXBlbmTDqm5jaWEgZG9zIG7Dum1lcm9zDQphY2YobnBhMSwgbWFpbiA9ICJGdW7Dp8OjbyBkZSBBdXRvY29ycmVsYcOnw6NvIikNCmBgYA0KDQpDb21vIG9zIHZhbG9yZXMgZGUgYXV0b2NvcnJlbGHDp8OjbyBlc3TDo28gcHLDs3hpbW9zIGRlIHplcm8sIGVudMOjbyBow6EgZXZpZMOqbmNpYXMgZGUgcXVlIG9zIG7Dum1lcm9zIGdlcmFkb3MgcGVsbyBHZXJhZG9yIExpbmVhciBDb25ncnVlbnRlIHPDo28gaW5kZXBlbmRlbnRlcy4NCg0KIyMjIyBUZXN0ZSBkZSBBdXRvY29ycmVsYcOnw6NvIHBhcmEgb3MgbsO6bWVyb3MgZ2VyYWRvcyBwZWxvIEdlcmFkb3IgZGUgVGF1c3dvcnRoZXsudW5udW1iZXJlZH0NCmBgYHtyfQ0KIyBWZXJpZmljYcOnw6NvIGRhIGluZGVwZW5kw6puY2lhIGRvcyBuw7ptZXJvcw0KYWNmKG5wYTJfMSwgbWFpbiA9ICJGdW7Dp8OjbyBkZSBBdXRvY29ycmVsYcOnw6NvIikNCmBgYA0KDQpDb21vIG9zIHZhbG9yZXMgZGUgYXV0b2NvcnJlbGHDp8OjbyBlc3TDo28gcHLDs3hpbW9zIGRlIHplcm8sIGVudMOjbyBow6EgZXZpZMOqbmNpYXMgZGUgcXVlIG9zIG7Dum1lcm9zIGdlcmFkb3MgcGVsbyBHZXJhZG9yIGRlIFRhdXN3b3J0aGUgc8OjbyBpbmRlcGVuZGVudGVzLg0KDQojIEdlcmFyIFZhcmnDoXZlbCBVbmlmb3JtZSBubyBJbnRlcnZhbG8gZGUgMTAgYSA1MA0KLSAqKkRFU0NSScOHw4NPOioqICBOZXN0YSBhdGl2aWRhZGUsIHZvY8OqIGlyw6EgaW1wbGVtZW50YXIgdW1hIHZhcmnDoXZlbCBhbGVhdMOzcmlhIHVuaWZvcm1lIG5vIGludGVydmFsbyBkZSAxMA0KYSA1MCwgdXRpbGl6YW5kbyBhIHRyYW5zZm9ybWHDp8OjbyBkZSB1bWEgZGlzdHJpYnVpw6fDo28gdW5pZm9ybWUgcGFkcsOjbyBubyBpbnRlcnZhbG8gZGUgMCBhIDEuDQoNCiMjIFRhcmVmYXMNCjEuIFVzZSBhIHRyYW5zZm9ybWHDp8OjbyBsaW5lYXIgcGFyYSBtYXBlYXIgb3MgdmFsb3JlcyBkZSAwIGEgMSBwYXJhIG8gaW50ZXJ2YWxvIGRlIDEwIGEgNTAuDQoxLiBDYWxjdWxlIGEgbcOpZGlhLCBtZWRpYW5hIGUgZGVzdmlvIHBhZHLDo28gZGEgYW1vc3RyYSBnZXJhZGEuDQoxLiBGYcOnYSB1bSBoaXN0b2dyYW1hIHBhcmEgdmlzdWFsaXphciBhIGRpc3RyaWJ1acOnw6NvIGRvcyB2YWxvcmVzIHRyYW5zZm9ybWFkb3MuDQoNCiMjIFJlc3Bvc3RhcyB7LnRhYnNldCAudGFic2V0LWZhZGV9DQojIyMgMSB7LnVubnVtYmVyZWR9DQpgYGB7cn0NCiMgdSDDqSB1bWEgdW5pZm9ybWUoMCwgMSkNCnUgPC0gZ2xjKHNlZWQ9NTQ4MjU0LCBuPTEwMDApDQoNCiMgdTEgw6kgdW1hIHVuaWZvcm1lKDEwLCA1MCkNCnUxIDwtICh1KjQwKSsxMDsgdTENCmBgYA0KDQojIyMgMiB7LnVubnVtYmVyZWR9DQoNCkPDoWxjdWxvIGRhIG3DqWRpYSwgbWVkaWFuYSBlIGRlc3ZpbyBwYWRyw6NvIGRlIHUxLg0KYGBge3IgY29sbGFwc2U9VFJVRX0NCiMgbcOpZGlhLCBtZWRpYW5hIGUgZGVzdmlvIHBhZHLDo28gZGUgdTENCnVtZWRpYSA8LSBtZWFuKHUxKQ0KdW1lZGlhbmEgPC0gbWVkaWFuKHUxKQ0KdWRwIDwtIHNkKHUxKQ0KDQp1bWVkaWE7IHVtZWRpYW5hOyB1ZHANCmBgYA0KDQpBIGRpc3RyaWJ1acOnw6NvIHRlw7NyaWNhIGRlIHUxIMOpIHVuaWZvcm1lKDEwLCA1MCkuDQpgYGB7ciBjb2xsYXBzZT1UUlVFfQ0KIyBtw6lkaWEsIG1lZGlhbmEgZSBkZXN2aW8gcGFkcsOjbyB0ZcOzcmljb3MgZGUgdTENCnVNdSA8LSAoMTArNTApLzINCnVNZWRpYW5hIDwtICgxMCs1MCkvMg0KdVNpZ21hMiA8LSBzcXJ0KCgoNTAtMTApXjIpLzEyKQ0KDQp1TXU7IHVNZWRpYW5hOyB1U2lnbWEyDQpgYGANCg0KIyMjIDMgey51bm51bWJlcmVkfQ0KYGBge3IgY29sbGFwc2U9VFJVRX0NCiMgSGlzdG9ncmFtYSBkZSB1MQ0KaGlzdCh1MSwgcHJvYmFiaWxpdHkgPSBULA0KICAgICBtYWluID0gIkhpc3RvZ3JhbWEgZGUgdTEiKQ0KY3VydmUoZHVuaWYoeCwgMTAsIDUwKSwgYWRkID0gVCwgY29sID0gInJlZCIpICMgY3VydmEgZGEgdW5pZm9ybWUoMTAsIDUwKSBwYXJhIGNvbXBhcmFyDQpgYGANCg0KIyBJbXBsZW1lbnRhciB1bSBnZXJhZG9yIGRlIHZhcmnDoXZlaXMgYWxlYXTDs3JpYXMgQmVybm91bGxpDQotICoqREVTQ1JJw4fDg086KiogIFVzZSB1bWEgdHJhbnNmb3JtYcOnw6NvIGRlIHZhcmnDoXZlaXMgcGFyYSBnZXJhciB1bWEgc2VxdWVuY2lhIGRlIEJlcm5vdWxsaSBhIHBhcnRpciBkZQ0KdW1hIHNlcXVlbmNpYSBkZSB2YXJpw6F2ZWlzIHVuaWZvcm1lIHVuaXTDoXJpYXMuDQoNCiMjIFRhcmVmYXMNCjEuIEltcGxlbWVudGUgaW5pY2lhbG1lbnRlIGEgVi5BLiBCZXJub3VsbGkgY29tIHByb2JhYmlsaWRhZGUgZGUgc3VjZXNzbyAkcCA9IDEvMiQgZGEgc2VndWludGUgZm9ybWEgJFhfaT1JKFVfaVxsZXEgcCkkLCBjb20gJFVfaVx0aGlja3NpbSBVKDAsMSkkLCAkaSA9IDEsLi4uLCBOJC4NCjEuIEltcGxlbWVudGUgbyB0ZXN0ZSBkZSBydW5zIChvdSB0ZXN0ZSBkZSBzZXF1w6puY2lhcykgcGFyYSB2ZXJpZmljYXIgYSBpbmRlcGVuZMOqbmNpYSBkb3MgbsO6bWVyb3MuDQoxLiBWZXJpZmlxdWUgYSBtw6lkaWEgZSBhIHZhcmnDom5jaWEgZG9zIG7Dum1lcm9zIGdlcmFkb3MuDQoNCiMjIFJlc3Bvc3RhcyB7LnRhYnNldCAudGFic2V0LWZhZGV9DQojIyMgMSB7LnVubnVtYmVyZWR9DQpgYGB7ciBjb2xsYXBzZT1UUlVFfQ0KZ19iZXJuIDwtIGZ1bmN0aW9uKG4sIHA9MC41KXsNCiAgeCA8LSBudW1lcmljKG4pICMgVmV0b3IgcGFyYSBhbWF6ZW5hciBvcyBuw7ptZXJvcw0KICBmb3IgKGkgaW4gMTpuKXsNCiAgICB1IDwtIHJ1bmlmKDEpICMgZ2VyYSB1bSB2YWxvciBkaWZlcmVudGUgZW50cmUgMCBlIDEgYSBjYWRhIGNpY2xvDQogICAgDQogICAgIyBzZSB1PD1wIGVudMOjbyByZXRvcm5hIDEsIGNhc28gY29udHLDoXJpbyByZXRvcm5hIDANCiAgICB4W2ldIDwtIGlmZWxzZSh1IDw9IHAsIDEsIDApDQogIH0NCiAgcmV0dXJuKHgpDQp9DQpgYGANCg0KR2VyYcOnw6NvIGRlIDEwMDAgYmVybm91bGxpcyBjb20gYHA9MC41YC4NCmBgYHtyfQ0Kc2V0LnNlZWQoNTQ4MjU0KQ0KbnBhNSA8LSBnX2Jlcm4obj0xMDAwLCBwPTAuNSk7IG5wYTUNCmBgYA0KDQojIyMgMiB7LnVubnVtYmVyZWR9DQpgYGB7ciBtZXNzYWdlPUZBTFNFLCBlcnJvcj1UUlVFfQ0KIyBpbnN0YWxsLnBhY2thZ2VzKCJ0c2VyaWVzIikNCmxpYnJhcnkodHNlcmllcykNCg0KIyBUZXN0ZSBkZSBzZXF1w6puY2lhDQpydW5zLnRlc3QoYXMuZmFjdG9yKG5wYTUpKQ0KYGBgDQoNCkNvbW8gbyBgcC12YWx1ZWAgw6kgbWFpb3IgcXVlIDAuMDUsIGVudMOjbyBuw6NvIGjDoSBldmlkw6puY2lhcyBzdWZpY2llbnRlcyBwYXJhIHJlamVpdGFyIGEgaGlww7N0ZXNlIGRlIHF1ZSBvcyBkYWRvcyBzw6NvIGluZGVwZW5kZW50ZXMuDQogIA0KIyMjIDMgey51bm51bWJlcmVkfQ0KTcOpZGlhIGUgdmFyacOibmNpYSBkb3MgbsO6bWVyb3MgZ2VyYWRvcy4NCmBgYHtyIGNvbGxhcHNlPVRSVUV9DQpiZXJNZWRpYSA8LSBtZWFuKG5wYTUpDQpiZXJWYXJpYW5jaWEgPC0gdmFyKG5wYTUpDQoNCmJlck1lZGlhOyBiZXJWYXJpYW5jaWENCmBgYA0KDQpBIGRpc3RyaWJ1acOnw6NvIHRlw7NyaWNhIGRvcyBkYWRvcyDDqSBiZXJub3VsbGkgY29tIGBwPTAuNWAuDQpgYGB7ciBjb2xsYXBzZT1UUlVFfQ0KYmVyTXUgPC0gMC41DQpiZXJTaWdtYTIgPC0gMC41KjAuNQ0KDQpiZXJNdTsgYmVyU2lnbWEyDQpgYGANCg0KIyBJbXBsZW1lbnRhciB1bSBnZXJhZG9yIGRlIHZhcmnDoXZlaXMgYWxlYXTDs3JpYXMgQmlub21pYWwNCi0gKipERVNDUknDh8ODTzoqKiBVc2UgbyByZXN1bHRhZG8gcXVlIGRpeiBxdWU7IGEgc29tYSBkZSBuIGRlIGRpc3RyaWJ1acOnw7VlcyBCZXJub3VsbGkocCkgw6kgdW1hIHZhcmnDoXZlbCBhbGVhdMOzcmlhIEJpbm9taWFsIGRlIHBhcsOibWV0cm9zIGNvbSBtw6lkaWEgJG4gwrcgcCQgZSB2YXJpw6JuY2lhICRuIMK3IHAgwrcgKDEg4oiSIHApJC4NCg0KIyMgVGFyZWZhcw0KMS4gSW1wbGVtZW50ZSBpbmljaWFsbWVudGUgY29tIG8gb2JqZXRpdm8gZGUgb2J0ZXIgdW1hIGRpc3RyaWJ1acOnw6NvIEJpbm9taWFsKG4gPSAyLCBwID0gMy80KS4NCjEuIEltcGxlbWVudGUgdW1hIGZ1bsOnw6NvIHF1ZSBnZXJlIHVtYSBhbW9zdHJhIGRlIHRhbWFuaG8gTiBkZSB1bWEgZGlzdHJpYnVpw6fDo28gQmlub21pYWwobiA9DQoyLCBwID0gMy80KS4NCjEuIFZlcmlmaXF1ZSBhIG3DqWRpYSBlIGEgdmFyacOibmNpYSBkb3MgbsO6bWVyb3MgZ2VyYWRvcy4NCg0KIyMgUmVzcG9zdGFzIHsudGFic2V0IC50YWJzZXQtZmFkZX0NCiMjIyAxIHsudW5udW1iZXJlZH0NCmBgYHtyfQ0KIyBNYXRyaXogY29tIDIgY29sdW5hcyBkZSAxMDAwIGJlcm5vdWxsaXMNCm1hdHJpel9iZXIgPC0gbWF0cml4KGdfYmVybigyKjEwMDAsIDMvNCksIG5jb2wgPSAyKQ0KDQojIFNvbWEsIGxpbmhhIHBvciBsaW5oYSwgZGUgY2FkYSBjb2x1bmENCnJvd1N1bXMobWF0cml6X2JlcikNCmBgYA0KDQojIyMgMiB7LnVubnVtYmVyZWR9DQpgYGB7cn0NCiMgRnVuw6fDo28gcXVlIGdlcmEsIGEgcGFydGlyIGRhIHNvbWEgZGUgbiBiZXJubm91bGlzKHApLCB1bWEgYmlub21pYWwobiwgcCkuDQpnX2Jpbm9taWFsIDwtIGZ1bmN0aW9uKE4sIG4sIHApew0KICBtYXRyaXpfYmVyIDwtIG1hdHJpeChnX2Jlcm4obipOLCBwKSwgbmNvbCA9IG4pDQogIHJldHVybihyb3dTdW1zKG1hdHJpel9iZXIpKQ0KfQ0KDQojIEdlcmHDp8OjbyBkZSB1bWEgYW1vc3RyYSBkZSAxMDAwIG7Dum1lcm9zIGRhIEJpbm9taWFsKG4gPTIsIHAgPSAzLzQpDQpucGE2IDwtIGdfYmlub21pYWwoTj0xMDAwLCBuPTIsIHA9My80KTsgbnBhNg0KYGBgDQoNCiMjIyAzIHsudW5udW1iZXJlZH0NCkPDoWxjdWxvIGRhIG3DqWRpYSBlIGRhIHZhcmnDom5jaWEgZGEgYW1vc3RyYSBkYSBCaW5vbWlhbCgyLCAzLzQpLg0KYGBge3IgY29sbGFwc2U9VFJVRX0NCmJpbm9NZWRpYSA8LSBtZWFuKG5wYTYpDQpiaW5vVmFyIDwtIHZhcihucGE2KQ0KDQpiaW5vTWVkaWE7IGJpbm9WYXINCmBgYA0KDQpDw6FsY3VsbyBkYSBtw6lkaWEgZSBkYSB2YXJpw6JuY2lhIHRlw7NyaWNhcyBkYSBkaXN0cmlidWnDp8OjbyBCaW5vbWlhbCgyLCAzLzQpLg0KYGBge3IgY29sbGFwc2U9VFJVRX0NCmJpbm9NdSA8LSAyKigzLzQpDQpiaW5vU2lnbWEyIDwtIDIqKDMvNCkqKDEvNCkNCg0KYmlub011OyBiaW5vU2lnbWEyDQpgYGANCg0KIyBTaW11bGFyIHVtIFByb2Nlc3NvIGRlIENvbnRyb2xlIGRlIFF1YWxpZGFkZSBhdMOpIGEgUHJpbWVpcmEgRmFsaGENCi0gKipERVNDUknDh8ODTzoqKiBFbSB1bSBwcm9jZXNzbyBkZSBjb250cm9sZSBkZSBxdWFsaWRhZGUsIHBvZGVtb3Mgc2ltdWxhciBhIHZlcmlmaWNhw6fDo28gZGUgcHJvZHV0b3MgYXTDqSBlbmNvbnRyYXIgYSBwcmltZWlyYSBmYWxoYSwgdXNhbmRvIHZhcmnDoXZlaXMgdW5pZm9ybWVzIHBhcmEgbW9kZWxhciBhIHByb2JhYmlsaWRhZGUgZGUgZmFsaGEuDQoNCiMjIFRhcmVmYXMNCjEuIEltcGxlbWVudGUgdW0gbG9vcCBxdWUgc2ltdWxlIHVtIHByb2Nlc3NvIGRlIHZlcmlmaWNhw6fDo28gZGUgcHJvZHV0b3MgYXTDqSBlbmNvbnRyYXIgYSBwcmltZWlyYQ0KZmFsaGENCjEuIENvbnNpZGVyZSBhIHByb2JhYmlsaWRhZGUgZGUgZmFsaGEgY29tbyBwID0gMCwgMDUuDQoxLiBSZWdpc3RyZSBvIG7Dum1lcm8gZGUgcHJvZHV0b3MgdmVyaWZpY2Fkb3MgYW50ZXMgZGEgcHJpbWVpcmEgZmFsaGEuDQoxLiBSZXBpdGEgYSBzaW11bGHDp8OjbyAxMDAwIHZlemVzIGUgY2FsY3VsZSBhIG3DqWRpYSBkbyBuw7ptZXJvIGRlIHByb2R1dG9zIHZlcmlmaWNhZG9zIGF0w6kgYSBwcmltZWlyYQ0KZmFsaGEuDQoNCiMjIFJlc3Bvc3Rhc3sudGFic2V0IC50YWJzZXQtZmFkZX0NCiMjIyAxIHsudW5udW1iZXJlZH0NCmBgYHtyIGNvbGxhcHNlPVRSVUV9DQpnX2dlb20gPC0gZnVuY3Rpb24obiwgcGZhbGhhKXsNCiAgeCA8LSBudW1lcmljKG4pICMgdmV0b3IgcXVlIHZhaSBhcm1hemVuYXIgYSBxdWFudGlkYWRlIGRlIHN1Y2Vzc29zIGF0w6kgYSBwcmltZWlyYSBmYWxoYQ0KICBmb3IgKGkgaW4gMTogbil7DQogICAgcmVwZWF0ew0KICAgICAgdSA8LSBydW5pZigxKSAjIFVtIHZhbG9yIGFsZWF0w7NyaW8gZW50cmUgMCBlIDENCiAgICAgIGlmICh1PHBmYWxoYSkgIyBTZSBvIHZhbG9yIGFsZWF0w7NyaW8gZW50cmUgMCBlIDEgZm9yIG1lbm9yIHF1ZSBhIHByb2JhYmlsaWRhZGUgZGUgZmFsaGEsDQogICAgICAgICAgICAgICAgICAgICMgZW50w6NvIGVuY2VycmEgbyBwcm9jZXNzbyBwb2lzIGhvdXZlIGZhbGhhDQogICAgICAgIGJyZWFrDQogICAgICBlbHNlDQogICAgICAgIHhbaV0gPC0geFtpXSArIDEgIyBDYXNvIGNvbnRyw6FyaW8sIGNvbnRhIG8gc3VjZXNzbw0KICAgIH0NCiAgfSAgDQogIHJldHVybih4KQ0KfQ0KYGBgDQoNCiMjIyAyIHsudW5udW1iZXJlZH0NCkRlZmluacOnw6NvIGRhIHByb2JhYmlsaWRhZGUgZGUgZmFsaGEuDQpgYGB7ciBjb2xsYXBzZT1UUlVFfQ0KcCA8LSAwLjA1DQpgYGANCg0KIyMjIDMgey51bm51bWJlcmVkfQ0KYGBge3IgY29sbGFwc2U9VFJVRX0NCiMgR2VyYcOnw6NvIGRlIDEgY29udGFnZW0gZGUgc3VjZXNzb3MgYXTDqSBhIHByaW1laXJhIGZhbGhhIGNvbSBwcm9iYWJpbGlkYWRlIGRlIGZhbGhhIGRlIDAuMDUuDQpzZXQuc2VlZCg1NDgyNTQpDQpnX2dlb20oMSwgcCkNCmBgYA0KDQojIyMgNCB7LnVubnVtYmVyZWR9DQpTaW11bGHDp8OjbyBkZSAxMDAwIGNvbnRhZ2VucyBkZSBzdWNlc3NvcyBhdMOpIGEgcHJpbWVpcmEgZmFsaGEuDQpgYGB7ciBvbGxhcHNlPVRSVUV9DQojIEdlcmHDp8OjbyBkZSAxMDAwIGNvbnRhZ2VucyBkZSBzdWNlc3NvcyBhdMOpIGEgcHJpbWVpcmEgZmFsaGEgY29tIHByb2JhYmlsaWRhZGUgZGUgZmFsaGEgZGUgMC4wNS4NCnNldC5zZWVkKDU0ODI1NCkNCm5wYTcgPC0gZ19nZW9tKDEwMDAsIHApOyBucGE3DQpgYGANCg0KTcOpZGlhIGUgYSB2YXJpw6JuY2lhIGRvcyByZXN1bHRhZG9zIGRhcyBzaW11bGHDp8O1ZXMgZmVpdGFzLg0KYGBge3IgY29sbGFwc2U9VFJVRX0NCmdlb01lZGlhIDwtIG1lYW4obnBhNykNCmdlb1ZhciA8LSB2YXIobnBhNykNCg0KZ2VvTWVkaWE7IGdlb1Zhcg0KYGBgDQoNCkEgZGlzdHJpYnVpw6fDo28gdGXDs3JpY2EgZG9zIGRhZG9zIMOpIHVtYSBHZW9tw6l0cmljYSgwLjA1KS4NCmBgYHtyIGNvbGxhcHNlPVRSVUV9DQpnZW9NdSA8LSAoMS1wKS9wDQpnZW9TaWdtYTIgPC0gKDEtcCkvKHBeMikNCg0KZ2VvTXU7IGdlb1NpZ21hMg0KYGBgDQo=