Você está na página 1de 8

ISSN 0101-9201

Notas Tcnicas e

CBPF-NT-005/11 setembro 2011

Geradores de N meros Aleatrios u o

Gabriela Sena Souza & Nilton Alves Jr.

Cincia, Tecnologia e Inovao

Geradores de Numeros Aleat rios o


Gabriela Sena Souza
Centro Brasileiro de Pesquisas Fsicas - CBPF/MCT, Rua Dr. Xavier Sigaud, 150, Urca, Rio de Janeiro, RJ, CEP 22290-180 Brazil and Universidade do Estado do Rio de Janeiro, UERJ, Rua S o Francisco Xavier, a 524, Maracan , Rio de Janeiro, RJ, Cep 20550-900 Brazil a

Nilton Alves Jr.


Centro Brasileiro de Pesquisas Fsicas - CBPF/MCT, Rua Dr. Xavier Sigaud, 150, Urca, Rio de Janeiro, RJ, CEP 22290-180 Brazil Esta Nota T cnica consiste no estudo dos principais geradores de n meros aleat rios existentes: Gerador e u o Linear Congruente, Multiply-With-Carry, Lagged Fibonacci, Mersenne Twister e /dev/random. Neste trabalho tamb m foram comentados dois testes que podem vir a ser realizados para vericar a qualidade dos geradores: e teste Monte Carlo e teste Chi-Quadrado. Analisando os m todos que s o utilizados pelos geradores, foi possvel e a concluir sobre o desempenho, o tamanho das sequ ncias geradas e principais caractersticas de cada um deles. e
Palavras-chaves: Geradores, Aleatoriedade, M todos. e

Sum rio a

1.

INTRODUCAO

1. Introducao 2. Geradores de Numeros Aleat rios o 2.1. Funcao Rand 2.2. M todo Linear Congruente e 2.3. Multiply-With-Carry 2.4. Geradores Lagged Fibonacci 2.5. Mersenne Twister 2.6. Geradores /dev/random e /dev/urandom 3. Testes de Geradores de Numeros Aleat rios o 3.1. Teste Monte Carlo 3.2. Teste Chi-Quadrado 4. Tabela Comparativa 5. Conclus o a Refer ncias e

1 2 2 3 3 3 3 4 4 4 5 5 5 6

Electronic Electronic

address: gabisenaa@gmail.com address: naj@cbpf.br

Em estatstica, um n mero aleat rio e aquele que per u o tence a uma s rie num rica e que n o pode ser previsto e e a a partir dos membros anteriores da s rie. Sequ ncias de e e n meros aleat rios podem ser geradas, por exemplo, atrav s u o e do lancamento de um dado ou de uma moeda. Nessas duas situacoes sabemos quais s o os resultados possveis, por m a e n o temos como prever qual ser o resultado obtido em cada a a lancamento. Na hist ria antiga, os conceitos de acaso e de aleatoriedade o estavam entrelacados com o destino. Muitos povos antigos jogavam dados para determinar o destino, e esses jogos mais tarde passaram a ser chamados de jogos de azar. No s culo XIX os conceitos de aleatoriedade comecaram a e ser estudados com mais rigor matem tico. Em 1866, John a Venn publicou o livro The Logic of chance[1]. Este livro cont m estudos sobre probabilidade, aleatoriedade e pose sui um captulo contendo o ponto de vista do autor sobre a aleatoriedade dos dgitos do n mero . u Na primeira parte do s culo XX observou-se um crescimento e muito r pido no estudo formal de aleatoriedade. Os cientisa tas da computacao comecaram a perceber que a introducao da aleatoriedade em alguns c lculos poderia ser uma ferraa menta ecaz para a obtencao de algoritmos melhores. A primeira tentativa de fornecer dgitos aleat rios ocorreu o em 1927 quando a editora Cambridge University publicou um livro que possuia uma tabela de 41.600 dgitos desen volvida por Leonard H.C. Tippet. Em 1947 a RAND Corporation gerou uma sequ ncia de n meros a partir de uma e u simulacao eletr nica de uma roda de roleta. Os resultados o foram publicados em 1955 com o ttulo Million Random Digits with 100.000 Normal Deviates. Um grande desao para os programadores desde que o estudo sobre aleatoriedade comecou, sempre foi conseguir gerar sequ ncias totalmente aleat rias no computador. Os e o n meros gerados no computador atrav s de algoritmos s o u e a chamados de pseudo-aleat rios, j que os algoritmos geram o a sequ ncias de n meros totalmente previsveis e portanto nee u nhum aleat rio verdadeiro. A palavra aleat rio e usada soo o mente para um processo fsico aleat rio, como por exemplo o

2 o tempo decorrido entre os cliques de um Contador Geiger1 colocado ao lado de uma amostra de um elemento radioativo. Os dados obtidos na leitura do contador Geiger ser o a totalmente aleat rios e esses dados tratados podem ser usao dos como semente na geracao de n meros aleat rios. Con u o siderando que o custo computacional para geracao de lon gas cadeias de n meros aleat rios e alta, m todos recursivos u o e s o mais explorados, porque acabam economizando procesa samento e mem ria. V rios m todos foram desenvolvidos e o a e podem ser implementados em algoritmos. Chamamos esses m todos de Geradores de n meros aleat rios. e u o Na secao 2 desta Nota T cnica encontramos uma explicacao e sobre o m todo utilizado pelos seguintes geradores: Lie near Congruente, Multiply-With-Carry, Lagged Fibonacci, Mersenne Twister e /dev/random. Na secao 3 s o descritos dois testes que podem ser utiliza a dos para vericar a qualidade de um gerador: teste Monte Carlo e o teste Chi-quadrado. Neste trabalho, os geradores n o foram testados j que o desempenho de cada um deles a a varia de apliacacao pra aplicacao. Cada usu rio dever re a a alizar seus pr prios testes para saber qual ser o melhor geo a rador para o seu caso. Na secao 4 podemos comparar os geradores a partir de uma tabela que caracteriza o perodo, a usabilidade e a implementacao de cada um.

Gabriela Sena Souza & Nilton Alves Jr. acoplados com suas particulares aplicacoes do programa. Se os geradores n o produzirem o mesmo resultado estatstico, a signica que pelo menos um deles n o e um bom gerador. a Por exemplo, quando jogamos dois dados aleatoriamente, a soma das faces podem ser sete e dois, com um n mero de u combinacoes possveis seis e um, e a probabilidade 1/6 e 1/36, respectivamente. Logo, se z ssemos um programa e para simular esse lancamento, e isso fosse feito um n mero u consider vel de vezes, deveramos obter muito mais vezes a o n mero sete. E qualquer gerador que fosse usado, deveu ria encontrar o mesmo resultado estatstico, caso contr rio, a signicaria que ele n o e um bom gerador. No caso dos daa dos, n s sabemos qual resultado estatstico seria correto, mas o existem muitas situacoes em que n o sabemos qual o me a lhor resultado, e por isso, e necess rio obter um gerador de a n meros aleat rios que nos permita conar nas sequ ncias u o e geradas. A maior parte das linguagens possuem rotinas para inicializar, e em seguida gerar n meros aleat rios, algumas u o delas ser o citadas neste trabalho. a
2.1. Funcao Rand

2.

GERADORES DE NUMEROS ALEATORIOS

Algumas caractersticas s o indispens veis para todos os a a geradores de n meros aleat rios: u o Os n meros gerados devem seguir uma distribuicao u uniforme, ou seja, a probabilidade de se gerar qualquer n mero em um intervalo contido em um u espaco amostral deve ser inversamente proporcional ao tamanho do intervalo. O valor de um n mero na sequ ncia n o deve afetar o u e a valor do pr ximo (na pr tica a maioria dos geradores o a usa sequ ncias recursivas, ent o h essa depend ncia e a a e dos valores anteriores, mas isso n o e estatisticamente a signicativo). A sequ ncia n o deve se repetir nunca. Isso e teorie a camente impossvel mas na pr tica um perodo de a repeticao sucientemente grande e o bastante. A geracao desses n meros deve ser r pida, de modo u a a poupar recursos computacionais para as simulacoes em si. V rios testes podem ser realizados para vericar a qualia dade dos geradores, mas o esperado e que todos os geradores obtenham estatisticamente os mesmos resultados quando

A funcao rand[2] e utilizada pela linguagem C para gerar n meros aleat rios. Ela e sempre utilizada com a funcao u o srand, que serve para determinar qual ser o n mero que ir a u a inicializar a sequ ncia de n meros aleat rios. O gerador de e u o n meros aleat rios e inicializado chamando-se srand(iseed) u o com algum valor positivo iseed, e cada valor de inicializar resulta numa sequ ncia aleat ria diferente. O mesmo valor e o inicializado de iseed sempre vai retornar a mesma sequ ncia e aleat ria. Obtem-se uma sequ ncia n meros aleat rios o e u o atrav s de sucessivas chamadas da funcao rand(). Essa e funcao retorna um inteiro que e geralmente na faixa de 0 at e o maior representante valor positivo do tipo int. Esse maior valor e disponvel como RAND MAX. As funcoes rand e srand possuem os C digos 2.1 e 2.2 respectivamente. o
1 2 3 4 5 6 7 int rand(void) { next = next * 1103515245 + 12345; return (unsigned int) (next/65536) } % 32768;

C digo 2.1: Funcao rand o


1 2 3 4 5 6 void srand(unsigned int seed) { next = seed; }

C digo 2.2: Funcao srand o

O contador Geiger serve para medir certas radiacoes ionizantes (partculas alfa, beta ou radiacao gama e raios-X). Ele e constitudo de um tubo Geiger-M ller e de um sistema de amplicacao e de registro do u sinal.

(iseed) a sequ ncia ser a mesma. Segundo, o maior valor possvel q e a Analisando os c digos fonte das funcoes rand e srand o pela funcao rand, que pode ser chamado de RAND MAX, e apenas encontramos alguns problemas. Em primeiro lugar, sabemuito ruim em que colocarmos a mesma semente (iseed) a mos que sempredeterminadas circunst ncias, como por exemplo par Carlo.encia ser a mesma. Segundo,querer avaliar 1.000.000 pontos Nessa integracao voc pode o maior valor possvel e a sequ a estar avaliando 32.767 pontos funcao rand, que pode ser retornado pela 30 vezes cada. que pode ser O m todo RAND na func e u o apenas 32.767. Isso pode ser chamado deutilizado MAX, e ao rand para gerar n meros aleat rio M todo Linear Congruente circunst ncias, como por exeme a muito ruim em determinadas e ele pode ser utilizado de v rias formas a plo para a integracao Monte Carlo. Nessa integracao voc e 2.2. querer avaliar 1.000.000 pontos e pode M todo Linear Congruente diferentes, mas pode O m todo linear congruente[3] e baseado na seguinte relacao de rec e xn+1 = (axn + c) mod m, n 0,

Nessa relacao, m e chamado de m dulo2, a de multiplicado o

CBPF-NT-005/11 estar avaliando 32.767 pontos 30 vezes cada. O m todo utilizado na funcao rand para gerar n meros e u aleat rios e conhecido como M todo Linear Congruente e o e ele pode ser utilizado de v rias formas diferentes. a
2.2. M todo Linear Congruente e

3 E cn e determinado por: cn = axnr + cn1 b (3)

O m todo linear congruente[3] e baseado na seguinte e relacao de recorr ncia: e xn+1 = (axn + c) mod m, n 0, (1)

Nessa relacao, m e chamado de m dulo2 , a de multipli o cador e c de incremento. Se esses valores forem escolhidos de forma errada, o perodo da sequ ncia de n meros e u aleat rios pode ser drasticamente afetado. O perodo ser o a sempre maior que m, logo, para aumentar o perodo deve-se ter o maior valor de m possvel. Caso os par metros a, c e m a sejam escolhidos de forma adequada, o algoritmo, apesar de simples, pode se tornar muito poderoso. No livro Numerical Recipes in C [3] encontramos uma tabela com bons valores para as constantes a, c e m. Al m da funcao rand, existem outras rotinas baseadas no e M todo Linear Congruente. Algumas rotinas podem ser ene contradas neste livro e s o elas: Ran1 e Ran2. a A rotina Ran1 e baseada em tr s geradores lineares congrue entes e a escolha de quais constantes da tabela ser o utia lizadas nessa rotina e arbitr ria. J rotina Ran2 e perfeitaa a mente adequada para quem quer ganhar velocidade, j que a ela utiliza apenas um gerador congruente linear. Essas duas rotinas possuem um desempenho melhor que a funcao rand, apesar de utilizarem o mesmo m todo. e O M todo Linear Congruente e muito utilizado e existem ale gumas variacoes desse m todo com o objetivo de melhor -lo, e a uma delas e o m todo Multiply-With-Carry[4]. e
2.3. Multiply-With-Carry

Comparando esse m todo ao gerador congruente linear e podemos perceber que a principal diferenca entre eles e que no m todo MWC o par metro c varia ao longo de cada e a iteracao. O m todo MWC, com valores adequados para os par metros, e a se torna muito poderoso e passa em testes estatsticos que os geradores congruentes lineares n o passam. a
2.4. Geradores Lagged Fibonacci

Os geradores Lagged Fibonacci[5] foram criados para serem uma melhoria aos geradores congruentes lineares. Esses geradores s o baseados na sequ ncia Fibonacci, que a e pode ser descrita pela seguinte relacao de recorr ncia: e Sn = Sn1 + Sn2 (4)

A f rmula da sequ ncia Fibonacci nos mostra que cada o e termo da sequ ncia e igual a soma dos seus dois termos antee cessores. Mas podemos generalizar essa f rmula da seguinte o forma: Sn = Sn j Snk (mod m), 0 < j < k (5)

Nessa f rmula, o novo termo e uma combinacao de quaiso quer dois termos anteriores. O termo m e normalmente uma pot ncia de 2 ( m = 2M ) onde M frequentemente e 32 ou 64. e O operador pode ser uma operacao de adicao, subtracao, multiplicacao e pode ser tamb m uma operacao bin ria. e a Um exemplo de um gerador Lagged Fibonacci muito uti lizado e o Mersenne Twister [6].
2.5. Mersenne Twister

O M todo Mutiply-with-carry (MWC) e uma variacao e do M todo Linear Congruente. A principal vantagem do e m todo MWC e que ele gera sequ ncias muito rapidamente e e e com perodos imensos variando entre 260 e 22.000.000 . Os geradores MWC costumam se comportar melhor que os outros geradores em testes de aleatoriedade. Na sua forma mais comum, um gerador MWC necessita de uma base b, um multiplicador a, um conjunto de valores aleat rios de sementes e um valor inicial para c. o Uma sequ ncia MWC e ent o uma sequ ncia de pares xn : e a e xn = (axnr + cn1 ) mod b (2)

O Mersenne Twister e um gerador de n meros pseudou aleat rios que foi desenvolvido em 1997 por Makoto Mato sumoto e Takuji Nishimura. Ele e uma variacao de um tipo de gerador Lagged Fibonacci e gera n meros aleat rios de u o altssima qualidade. Foi criado para corrigir diversas falhas existentes em algoritmos mais antigos. O nome Mersenne Twister deriva do fato do tamanho do perodo ser escolhido como um Primo de Mersenne3 . Esse gerador e baseado numa matriz de recorr ncia linear e e sua f rmula de recorr ncia e bastante complexa. o e Existem duas variacoes comuns do gerador Mersenne Twister, diferindo apenas no tamanho do Primo de Mersenne usado. S o elas: MT19937 (32-bit) e MT19937-64 (64-bit). a Para v rias aplicacoes o Mersenne Twister tem se tornado o a

A operacao m dulo encontra o resto da divis o de um n mero por outro. o a u Dados dois n meros a (o dividendo) e b (o divisor), a mod b e o resto da u divis o de a por b. a

Primo de Mersenne e um n mero de Mersenne (n mero na forma Mn = 2n u u 1, com n sendo um n mero natural) que tamb m e um n mero primo. u e u

4 gerador de n meros aleat rios padr o, ele e utilizado por eu o a 3.1. xemplo na linguagem de programacao Python. Teste Monte Carlo As principais caracterticas do Mersenne Twister s o o fato a de possuir um perodo muito longo, de 219.937 1, e o fato de ter sido aprovado pelos principais testes de aleatoriedade existentes.
2.6. Geradores /dev/random e /dev/urandom

Gabriela Sena Souza & Nilton Alves Jr.


3.1. Teste Monte Carlo

O sistema operacional Linux foi o primeiro sistema a implementar um gerador de n meros aleat rios verdadeiro. u o Esse gerador de n meros aleat rios foi implementado u o pela primeira vez em 1994 por Theodore Tso [7]. Figura 1: Circunfer ncia circunscrita num quadrado. e Na implementacao, o gerador faz uma estimativa das Figura 1. Circunferencia circunscrita num quadrado. interrupcoes do teclado, cliques do mouse e outros proces Este teste utiliza o m todo Monte Carlo, que e um e sos e a partir disso gera n meros aleat rios. u o Este teste utiliza o estatstico Monte Carlo, que oes estoc sticas, estatstico u m todo utilizado em simulac um m todo tem e e e m todo e a O gerador /dev/random e adequado para usu rios que necesa simulacoes estoc sticas, ao em diferentes em diferentes areas como fe a aplicac tem aplicacao areas como fsica e matem tica sica e m a sitam de um gerador de alta qualidade, como por exemplo pode ser formas diferentes. pode ser usado de diversasusado de diversas formas diferentes. para gerar chaves criptogr cas. a O m todo Monte Carlo foi desenvolvido von Neumann, e Quando o computador n o estiver sendo O m todo Monte Carlo foi desenvolvido por John por John von Neu- Stanisl a usado, a leitura a e mann, Stanislaw Ulam e Nicholas Metropolis enquanto inpartir de /dev/random ir bloquear at que um novo rudo a e Nicholas Metropolis enquanto investigavam as dist ncias percorridas por n ut a e e vestigavam as dist ncias percorridas por n utrons dentro de a ambiental seja recolhido. de determinados materiais. Depois de realizarem v rios experimentos, a a determinados materiais. Depois de realizarem v rios experiQuando a leitura a partir de /dev/random for bloqueada, a quegerador lculos dessas dist ncias percorridas pelos n utrons nperos c reuti- mentos, perceberam que os c lculos dessas dist nciasao poderiam a a e a o gerador /dev/urandom e utilizado. Esse corridasao, sugeriu que a e liza o que j foi usado para produzir bits analiticamente. Ulam, entpelos n utrons n o poderiam serexperimentos aleat rio a pseudo-aleat rios. o fossem feitos feitos analiticao mente. Ulam, ent o, sugeriu que fossem feitos experimena Isso signica que a chamada n o ir bloquear, mas a sada a a desses experimentos surgiurios, eetodo sMonteexperimentos surgiudom todo e um o matrav desses Carlo. O nome o m todo e tos aleat o e e pode n o ser aleat ria como e com /dev/random. O gerador a o ao cassino Monte Carlo que existe em do m todo eonderefer ncia Ulam costumava Monte Carlo. O nome Monaco, uma o tio de ao cassino e e /dev/urandom pode ser utilizado para aplicacoes menos seMonte Carlo que existe em Monaco, onde o tio de Ulam cosseu dinheiro. guras. Os geradores /dev/random e /dev/urandom m todo Monte Carlo necessita de uma grande quantidade de n meros alea a O tamb m est o tumava gastar todo seu dinheiro. e e u O m todo Monte Carlo necessita de uma grande quantidade e disponveis nos sistemas operacionais Solaris, Mac OS X, funcionar corretamente,meros aleat rios para funcionar etodo como um teste, poder de n logo, se utilizarmos esse m u o corretamente, logo, se NetBSD, etc. se o gerador de n meros aleat rioseque foi utilizado epoderemos saber se u utilizarmos esse m todo como um teste, aceit vel. o a o gerador de n e obter valores para utilizadoe de uma u o a Uma forma de realizar este teste meros aleat rios que foi atrave aceit vel. raz o en s a de realizar este teste obter valores para 3. TESTES DE GERADORES DE da Figura 1. A razUma forma areas dessa gura eecalculada atrav s de dados NUMEROS ao entre as e atrav s de uma raz o entre as areas da Figura 1. A raz o ene a a ALEATORIOS um gerador de n meros aaleat rios. Se os valoresatrav s de dadospara ap s os u tre as reas dessa gura e calculada encontrados obtidos o o e aproximarem do valor um gerador de nque o aleat rios.eSe os valores encona por real, signicaumeros gerador con vel. o O objetivo dos testes de geradores de n meros aleat rios u o o a Podemos realizar otrados para seguintec lculos se aproximarem do valor real, teste da ap s os forma: primeiramente jogamosponto e garantir que os geradores testados ir o obter resultados esa a tatsticos con veis para uma determinada aplicacao. a numa circunfer ncia circunscrita num quadrado (Fig. 1), ou seja, utilizamos e signica que o gerador e con vel. Podemos realizar o teste da seguinte forma: primeiraUma das melhores formas de testar um geradorumeros aleat rios para lancar pontos na gura. Depois, fazemos uma ra e de n vericar se o mente jogamospontos aleat rios numa circunfer ncia cir o e o resultado estatstico obtido por ele e o mesmo que o aque n mero ao seja o dentro do quadrado e (Fig.umero de pontos dentro da circun u de pontos cunscrita num quadrado o n 1), ou seja, utilizamos um les obtidos por outros geradores. Caso o resultado n gerador de n estimativa para o lancar pontos u o mesmo, signica que pelo menos um dosassim podemos encontrar uma meros aleat rios paravalor de . na gura. geradores utilizaDepois, fazemos uma raz o entre o n mero de pontos dentro a u dos n o e bom. a Sabendo que a area de 1/4 de crculo e: do quadrado e o n mero de pontos dentro da circunfer ncia, u e Outra forma de avaliar um gerador e colocar os dados obtidos e assim podemos encontrar uma estimativa para o valor de . por ele em um histograma, em seguida vericar a proporcao Sabendo que a area de 1/4 de crculo e: R2 de valores que ocorre em cada intervalo do histograma e comparar se essa proporcao se aproxima daquela esperada. 4 Os testes realizados com os geradores podem ser empricosa area do quadrado e: R2 E sabendo que A= ou te ricos. Nos testes empricos os n meros que s o obtio u a 4 dos no gerador s o avaliados com t cnicas estatsticas. J a e a E sabendo que a area do quadrado2e: os testes te ricos s o sosticados e envolvem ferramentas o a B=R matem ticas mais complexas. Os testes te ricos indicam a o Podemos dizer a a qualidade de um gerador de acordo com algum crit rioque ser : e B = R2 matem tico, sem exigir a geracao de n meros. Por exema u Podemos dizer que ser : a plo, nos geradores congruentes lineares, os testes avaliam as 4A constantes a, c e m. = B Neste trabalho foram estudados dois testes: teste Monte 4A = Carlo[8] e teste Chi-Quadrado[8]. B

A=

(6)

(7)

(8)

CBPF-NT-005/11 Assim, quanto mais aleatoriamente conseguirmos jogar os pontos na circunfer ncia, obteremos uma melhor estimativa e para a raz o entre as areas A e B e consequentemente para . a
3.2. Teste Chi-Quadrado

5 Se o 2 calculado for maior ou igual que o 2 tabelado, c ent o rejeitam-se os dados. a Se o 2 calculado for menor que o 2 tabelado, ent o a c aceitam-se os dados. Por exemplo, se um dado for jogado 6 vezes, a probabilidade de cair qualquer face e 1/6, j que espera-se obter uma vez a cada face (1, 2, 3, 4, 5 e 6). Supondo que um dado foi jogado 186 vezes e se obteve: face 1 = 34; face 2 = 29; face 3 = 30, face 4 = 32; face 5 = 28; face 6 = 33. O resultado esperado para cada face ser calculada da a seguinte forma: A probablidade de se obter cada face multiplicada pelo n mero de vezes que o dado foi lancado: 1/6 . 186 = 31. u Qual ser o valor de 2 ? a Calculando,
n

Este e o teste mais utilizado e e denotado por 2 . O m todo utilizado neste teste consiste em comparar as e possveis diverg ncias entre os dados obtidos por um e gerador para um determinado evento e os dados esperados para o mesmo evento. Podemos dizer que um gerador e bom quando as diferencas entre os dados obtidos e os dados esperados se aproximam de zero. Karl Pearson prop s a seguinte f rmula para medir as o o possveis discrep ncias entre os dados obtidos e os dados a esperados: (on en )2 = [ ] en i=1
2 n

(9) obteve-se:

2 = [
i=1

(on 31)2 ] 31

(11)

onde: o = dados obtidos; e = dados esperados. Quando os dados obtidos s o muito pr ximos aos esperados, a o o valor de 2 e pequeno. Mas, quando as diverg ncias s o e a grandes, a diferenca o e passa a ser tamb m grande e con e sequentemente, 2 assume valores altos. Para utilizar esse teste, e necess rio obter duas estatsticas a denominadas 2 e 2 tabelado. O 2 tabelado s o valores a c c xos que est o contidos na Tabela 1. A Tabela 1, conhecida a como a tabela de Chi Quadrado, mostra o valor da probabilidade nas colunas e o n mero de Graus de liberdade (G.L.) u nas linhas, que e calculado da seguinte forma: G.L. = Espaco Amostral 1 (10)

2 = (0, 2903 + 0, 1290 + 0, 0322 + 0, 0322 + + 0, 2903 + 0, 1290) = 0, 903 (12) Como se pode interpretar esse valor? Sabendo que o espaco amostral neste caso e 6, j que o dado a possui seis faces, utilizando a equacao 10, chegamos a con clus o que G.L. = 5. a Vericando-se a Tabela 1 na linha em que G.L. = 5 encontrase 2 igual a 11,070. Como o valor de Chi-quadrado obtido c (0,903) foi menor que o esperado ao acaso (11,070) admitese que o dado seja honesto.
4. TABELA COMPARATIVA

Na coluna referente a 5% de probabilidade encontra-se o valor crtico de 2 , com o qual deve ser comparado o valor c calculado de 2 .

GL / P 1 2 3 4 5

...

0,990 0,000 0,020 0,115 0,297 0,554

0,950 0,004 0,103 0,352 0,711 1,145

...

2 c 0,050 3,841 5,991 7,815 9,488 11,070

0,020 5,412 7,824 9,837 11,668 13,388

0,010 6,635 9,210 11,345 13,277 15,080

0,001 10,827 13,815 16,266 18,467 20,515

Na tabela 2 encontramos uma comparacao entre os ge radores estudados neste trabalho. Ela possui o perodo de todos os geradores, com excecao de /dev/random e Lagged Fibonacci, j que n o possuem um perodo xo. Al m do a a e perodo, encontramos a usabilidade, ou seja, em quais lin guagens, sistemas operacionais e softwares os geradores s o a utilizados. Atrav s da tabela tamb m e possvel vericar se e e a e f cil implementar os geradores.
CONCLUSAO

5. Tabela I: Na tabela podemos encontrar na primeira linha e na primeira coluna, os valores para a probabilidade e o grau de liberdade respectivamente. Os valores que se encontram na coluna de 0,050 de probabilidade s o os valores do 2 . a c

O 2 calculado e obtido a partir dos dados experimentais, levando-se em consideracao os valores obtidos e esperados. J o 2 tabelado depende do n mero de graus de liberdade. a u c A decis o e feita comparando os dois valores de 2 : a

Atrav s do estudo que foi realizado sobre os principais e geradores de n meros aleat rios e os seus respectivos u o m todos, foi possvel identicar quais s o as principais e a caractersticas de cada gerador e quais s o os geradores que a possuem melhor desempenho. O gerador da pr pria linguagem C (funcao rand) pode o ser considerado bom para gerar sequ ncias pequenas mas e quando se deseja uma sequ ncia muito grande e de alta e

Gabriela Sena Souza & Nilton Alves Jr.

Tabela II: Tabela Comparativa


GERADORES DE NUMEROS ALEATORIOS PERIODO USABILIDADE IMPLEMENTACAO

Funcao rand M todo Linear Congruente e Multiply-With-Carry Lagged Fibonacci Mersenne Twister Gerador /dev/random

>m 260 at e 22.000.000 219.9371 -

C e C++ Rand, Ran1, Ran2 Mersenne Twister Python Linux, Mac OS X

F cil a F cil a M dia e F cil a F cil a M dia e

qualidade, esse gerador n o deve ser utilizado, j que ele a a possui um perodo curto. Os geradores Ran1 e Ran2, que utilizam o M todo Congrue ente Linear, possuem uma performance boa, mas n o foram a aprovados em alguns testes de aleatoriedade considerados importantes. O M todo Congruente Linear possui um e rendimento razo vel quando seus par metros s o escolhidos a a a de forma adequada. O gerador Mersenne Twister foi criado para corrigir diversas falhas em algoritmos antigos e entre todos os geradores de n meros pseudo-aleat rios existentes ele pode ser consideu o rado um dos melhores. Foi aprovado nos principais testes de aleatoriedade. O m todo Multiply-with-Carry pode ser considerado uma e evolucao do M todo Linear Congruente. Ele e capaz de e gerar sequ ncias muito longas e de grande qualidade se os e par metros adequados forem escolhidos. a O gerador /dev/random obtem n meros totalmente u aleat rios, por m, depende da utilizacao do computao e

dor para que sejam obtidos os dados de cliques do mouse, interrupcoes do teclado e etc. E aconselh vel que esse a m todo seja utilizado apenas na obtencao de uma semente e para inicializar um outro gerador. Os testes citados neste trabalho s o os mais utilizados, mas a existem muitos outros testes que podem ser aplicados. Entre todos os geradores que foram estudados, concluiu-se que os que possuem melhor desempenho s o o Mersenne a Twister e o Multiply-with-Carry. O fato destes geradores possurem melhor desempenho, n o signica que os outros a geradores n o possam ser utilizados. Toda vez que for a necess rio utilizar um gerador de n meros aleat rios, deve a u o ser feita uma an lise do m todo que e utilizado por ele a e e deve ser estudado se aquele gerador e capaz de obter resultados estatsticos corretos para a funcao que ele vai exercer. Atrav s desse estudo e que torna-se possvel e saber se o gerador ter um bom desempenho ou n o para a a a aplicacao especca.

[1] Venn, J., The Logic of Chance, Cambridge University Press, 1866. [2] Kernighan, B. W., Ritchie, D. M., The C Programming Language, PTR Prentice Hall, Engleawood Cliffs, New Jersey, 2th edition, ISBN 0-13-110362-8, 1988. [3] Press, W. H., Teukolsky, S. A., Flannery, B. P., Vetterling W. T., Numerical Recipes in C: The Art of Scientic Computing, Cambridge University Press, 1th edition, ISBN 0-521-35465-X book, 1988. [4] Goresky, M., Klapper, A., Efcient Multiply-with-Carry Random Number Generators with Maximal Period, Institute for Advanced Study, University of Kentucky, CM165A-01, 2003. [5] Rosa, F. H. F. P., Junior, V. A. P., Gerando N meros u

Aleat rios, Laborat rio de Matem tica Aplicada, 21 de o o a novembro de 2002. [6] Vieira, C. E. C., Souza R. C., Ribeiro C. C. C., Um Estudo Comparativo entre Tr s Geradores de N meros Aleat rios, e u o PUC-RioInf.MCC16/04 Junho, 2004. [7] Gutterman, Z., Pinkas, B., Reinman, T., Analysis of the Linux Random Number Generator, The Hebrew University of Jerusalem, University of Haifa, March 6, 2006. [8] Zeeb, C. N., Random Number Generator Recommendation, Colorado State University, Departament of Mechanical Engineering, Fort Collins 80523.

Notas Tcnicas uma publicao de trabalhos tcnicos relevantes, das difee e ca e rentes reas da f a sica e ans, e reas interdisciplinares tais como: Qu a mica, Computao, Matemtica Aplicada, Biblioteconomia, Eletrnica e Mecnica ca a o a entre outras. Cpias desta publicao podem ser obtidas diretamente na pgina web o ca a http://notastecnicas.cbpf.br ou por correspondncia ao: e Centro Brasileiro de Pesquisas F sicas Area de Publicaes co Rua Dr. Xavier Sigaud, 150 4o andar 22290-180 Rio de Janeiro, RJ Brasil E-mail: socorro@cbpf.br/valeria@cbpf.br http://www.biblioteca.cbpf.br/index 2.html Notas Tcnicas is a publication of relevant technical papers, from dierent e areas of physics and related elds, and interdisciplinary areas such as Chemistry, Computer Science, Applied Mathematics, Library Science, Electronics and Mechanical Engineering among others. Copies of these reports can be downloaded directly from the website http://notastecnicas.cbpf.br or requested by regular mail to: Centro Brasileiro de Pesquisas F sicas Area de Publicaes co Rua Dr. Xavier Sigaud, 150 4o andar 22290-180 Rio de Janeiro, RJ Brazil E-mail: socorro@cbpf.br/valeria@cbpf.br http://www.biblioteca.cbpf.br/index 2.html

Você também pode gostar