Você está na página 1de 39

Geração de número aleatório

Pierre L'Ecuyer 1

D´épartement d'Informatique et de Recherche Op´érationnelle, Universit´é de Montr´éal, CP


6128, Succ. Centre-Ville, Montreal (Quebec), H9S 5B8, Canadá.
http://www.iro.umontreal.ca/~lecuyer

1. Introdução

Os campos de probabilidade e estatística são construídos sobre os conceitos abstratos de


espaço de probabilidade e variável aleatória. Isso deu origem a uma teoria matemática
elegante e poderosa, mas a implementação exata desses conceitos em computadores
convencionais parece impossível. Na prática, variáveis aleatórias e outros objetos
aleatórios são simulado de algoritmos determinísticos. O objetivo desses algoritmos é
produzir sequências de números ou objetos cujo comportamento seja muito difícil de
distinguir daquele de suas contrapartes “verdadeiramente aleatórias”, pelo menos para a
aplicação de interesse. Os requisitos principais podem ser diferentes dependendo do
contexto. Para os métodos de Monte Carlo, o objetivo principal é reproduzir as
propriedades estatísticas nas quais esses métodos se baseiam, de forma que os
estimadores de Monte Carlo se comportem como esperado, enquanto para as máquinas
de jogo e criptologia, observar a sequência de valores de saída por algum tempo deve
fornecer não vantagem prática para prever os próximos números melhor do que apenas
adivinhar ao acaso.
Em estatística computacional, a geração de variáveis aleatórias é geralmente feita
em duas etapas: (1) geração de imitações de variáveis aleatórias independentes e
identicamente distribuídas (iid) com distribuição uniforme no intervalo (0, 1) e (2)
aplicação de transformações a essas iid VOCÊ( 0, 1) variáveis aleatórias para gerar (ou
imitar) variáveis aleatórias e vetores aleatórios de distribuições arbitrárias. Essas duas
etapas são essencialmente independentes e os melhores especialistas do mundo nelas
são dois grupos diferentes de cientistas, com pouca sobreposição. A expressão ( pseudo)
gerador de números aleatórios ( RNG) geralmente se refere a um algoritmo usado para a
etapa (1).
Em princípio, a maneira mais simples de gerar uma variável aleatória X com função de
distribuição F a partir de um VOCÊ( 0, 1) variável aleatória você é aplicar o inverso de F para VOCÊ:

ef min { x | F (x) ≥ VOCÊ}.


X = F - 1 ( VOCÊ) d = (1)
2 Pierre L'Ecuyer

Isto é o inversão método. É facilmente visto que X tem a distribuição desejada: P [X ≤


x] = P [F - 1 ( VOCÊ) ≤ x] = P [U ≤ F (x)] = F (x). Outros métodos às vezes são preferíveis
quando F - 1 é muito difícil ou caro para calcular, como será visto mais tarde.

O restante deste capítulo é organizado da seguinte forma. Na próxima seção, damos


uma definição e os principais requisitos de um RNG uniforme. Geradores baseados em
recorrências lineares módulo um inteiro grande m, sua estrutura de rede e critérios de
qualidade, e sua implementação, são abordados na Seção. 3. Na seção 4, temos uma
discussão semelhante para RNGs com base em recorrências lineares módulo 2. RNGs
não lineares são brevemente apresentados na Seção. 5. Na seção 6, discutimos testes
estatísticos empíricos de RNGs e damos alguns exemplos. Sect. 7 contém algumas dicas
para RNGs e software recomendados. Na seção 8, cobrimos geradores de variáveis
aleatórias não uniformes. Primeiro, discutimos a inversão e sua implementação em
vários ambientes. Em seguida, explicamos o alias, a rejeição, a proporção de uniformes,
os métodos de composição e de convolução e fornecemos indicadores para os vários
outros métodos que se aplicam em casos especiais.
Referências básicas importantes que recomendamos são Knuth (1998); L'Ecuyer
(1994, 1998); Niederreiter (1992) e Tezuka (1995) para uniformes RNGs e Devroye
(1986); Gentle (2003) e H¨örmann et al. (2004) para RNGs não uniformes.

2 geradores de números aleatórios uniformes

2.1 Dispositivos Físicos

Os números aleatórios podem ser gerados por meio de mecanismos físicos, como o
sincronismo entre eventos sucessivos no decaimento atômico, ruído térmico em
semicondutores e semelhantes. Uma questão importante ao construir um RNG com base
em um dispositivo físico é que uma saída “aleatória” ou “caótica” não é suficiente; os
números produzidos devem ser, pelo menos com uma boa aproximação, realizações de independente
e uniformemente distribuído variáveis aleatórias. Se o dispositivo gerar um fluxo de bits,
o que é típico, cada bit deve ser 0 ou 1 com igual probabilidade e ser independente de
todos os outros bits. Em geral, isso não pode ser provado, portanto, deve-se confiar nos
resultados de testes estatísticos empíricos para se convencer de que os valores de saída
têm o comportamento estatístico desejado. Nem todos esses dispositivos são confiáveis,
mas alguns aparentemente são. Testei dois deles recentemente e eles passaram em
todos os testes estatísticos que tentei.
Para estatísticas computacionais, os dispositivos físicos têm várias desvantagens em
comparação com um bom RNG algorítmico que ocupa algumas linhas de código. Por
exemplo, (a) eles são muito mais complicados de instalar e executar; (b) são mais caros;
(c) são mais lentos; (d) eles não podem reproduzir exatamente a mesma sequência duas
vezes. O item (d) é importante em vários contextos, incluindo a verificação e depuração
do programa, bem como a comparação de sistemas semelhantes
Geração de número aleatório 3

por simulação com números aleatórios comuns para reduzir a variância (Bratley et al.,
1987; Fishman, 1996; Law e Kelton, 2000). No entanto, esses RNGs físicos podem ser úteis
para selecionar a semente de um RNG algorítmico, mais particularmente para aplicações
em criptologia e para máquinas de jogos, onde a re-propagação frequente do RNG com
uma fonte externa de entropia (ou aleatoriedade) é importante. Um bom RNG
algorítmico cuja semente é selecionada aleatoriamente pode ser visto como um extensor
da aleatoriedade, estendendo uma pequena semente aleatória em uma longa sequência
de pseudo-aleatório números.

2.2 Geradores com base em uma recorrência determinística

RNGs usados para simulação e outras aplicações estatísticas são quase sempre baseados em
algoritmos determinísticos que se enquadram na seguinte estrutura, tirada de L'Ecuyer (1994):
um RNG é uma estrutura ( S, µ, f, VOCÊ, g) Onde S é um conjunto finito de estados ( a espaço de
estado), µ é uma distribuição de probabilidade em S usado para selecionar
a Estado inicial ( ou semente) s 0, f: S → S é o função de transição, você é o
espaço de saída, e g: S → U é o função de saída. Geralmente, U = ( 0, 1) e
assumiremos daqui em diante que é esse o caso. O estado do RNG evolui
de acordo com a recorrência s i = f (s eu - 1), para eu ≥ 1, e o resultado na etapa eu
é você i = g (s eu) ∈ U. Os valores de saída você 0, você 1, você 2,. . . são os chamados Números
aleatórios produzido pelo RNG.
Porque S é finito, deve haver algum finito eu ≥ 0 e j> 0 tal que
s l + j = s eu. Então, para todos eu ≥ eu, um tem s i + j = s eu e você i + j = você eu, porque ambos f
e g são determinísticos. Ou seja, as sequências de estado e saída são eventualmente
periódico. O menor positivo j para o qual isso acontece é chamado de duração do período
do RNG, e é denotado por ρ. Quando l = 0, diz-se que a sequência é puramente periódico.
Obviamente, ρ ≤ | S |, a cardinalidade de S. Se o estado tem um
k- representação de bits no computador, então ρ ≤ 2 k. Bons RNGs são projetados para que
sua duração de período ρ não está longe desse limite superior. Em geral, o
valor de ρ pode depender da semente s 0, mas bons RNGs são normalmente projetados de modo que a
duração do período seja a mesma para todas as sementes admissíveis.
Em implementações práticas, é importante que a saída seja estritamente
entre 0 e 1, porque F - 1 ( VOCÊ) é muitas vezes infinito quando você é 0 ou 1. Todas as
boas implementações cuidam disso. No entanto, para a análise matemática de
RNGs, frequentemente assumimos que o espaço de saída é [0, 1) (ou seja, 0 é
admissível), porque isso simplifica a análise consideravelmente sem fazer muita
diferença na estrutura matemática do gerador.

2.3 Critérios de Qualidade

Que critérios de qualidade importantes devemos considerar ao projetar RNGs?


Extremamente período longo é obviamente essencial, para garantir que não ocorra na
prática nenhuma reversão ao longo do ciclo. A duração do período deve ser garantida
por uma prova matemática. O RNG também deve ser eficiente ( executar rápido e usar
apenas uma pequena quantidade de memória), Repetivel ( capaz de reproduzir
4 Pierre L'Ecuyer

exatamente a mesma sequência quantas vezes quisermos), e portátil ( funcionam da


mesma forma em diferentes ambientes de software / hardware). A disponibilidade de
eficiente salto à frente métodos que podem calcular rapidamente s i + ν dado s eu, para qualquer
grande ν e qualquer eu, também é muito útil, porque permite particionar o
Sequência RNG em longa disjunção córregos e substreams de números aleatórios, a fim
de criar um número arbitrário de geradores virtuais de um único RNG (Law e Kelton,
2000; L'Ecuyer et al., 2002a). Esses geradores virtuais podem ser usados em
processadores paralelos ou para suportar diferentes fontes de aleatoriedade em um
grande modelo de simulação, por exemplo.
Considere um RNG com espaço de estado S = { 1,. . . 2 1000 - 1}, função de transição
s i + 1 = f (s i) = ( s i + 1) mod 2 1000, e você i = g (s i) = s eu/ 2 1000 Este RNG tem duração de período 2 1000
e desfruta de todas as boas propriedades descritas no
parágrafo anterior, mas está longe de imitar "aleatoriedade". Em outras palavras, essas
propriedades são não é suficiente.
Uma sequência de variáveis aleatórias de valor real você 0, você 1, você 2,. . . são iid VOCÊ( 0, 1) se
e somente se para todos os inteiros eu ≥ 0 e t> 0, o vetor você i, t = ( você eu, . . . , você i + t - 1)
é uniformemente distribuído sobre o t- hipercubo de unidade dimensional (0, 1) t. De
claro, isso não pode ser válido para RNGs algorítmicos porque qualquer vetor de t valores
sucessivos produzidos pelo gerador devem pertencer ao conjunto finito

Ψ t = {( você 0,. . . , você t - 1): s 0 ∈ S},


que é o conjunto de todos os vetores de t valores de saída sucessivos, de todos os possíveis
estados iniciais. Aqui nós interpretamos Ψ t como um multiset, o que significa que os vetores
são contados quantas vezes aparecem, e a cardinalidade de Ψ t é exatamente igual
ao de S.
Suponha que selecionamos a semente s 0 ao acaso, uniformemente S. Isso pode
ser aproximado usando algum dispositivo físico, por exemplo. Então, o vetor
você 0, t tem a distribuição uniforme sobre o conjunto finito Ψ t. E se a sequência for puramente
periódica para todos s 0, você i, t = ( você eu, . . . , você i + t - 1) também é distribuído uniformemente Ψ t para
todos eu ≥ 0. Uma vez que o objetivo é aproximar a distribuição uniforme em (0, 1) t, torna-se
imediatamente aparente que Ψ t deve ser espalhado uniformemente
sobre este hipercubo unitário. Em outras palavras, Ψ t aproxima ( 0, 1) t Enquanto o espaço amostral a
partir da qual os vetores de valores de saída sucessivos são desenhados aleatoriamente
então deve ser uma boa aproximação de (0, 1) t em algum sentido. O projeto de
RNGs de boa qualidade deve, portanto, envolver maneiras práticas de medir o
uniformidade dos conjuntos correspondentes Ψ t mesmo quando eles têm cardinalidades enormes.
Na verdade, um grande espaço de estado S é necessário obter um longo período, mas
uma razão ainda mais importante para ter um grande número de estados é fazer
claro que Ψ t pode ser grande o suficiente para fornecer uma boa cobertura uniforme do hipercubo da
unidade, pelo menos para valores moderados de t.
De forma mais geral, também podemos querer medir a uniformidade de conjuntos da
forma
Ψ I = {( você eu 1,. . . , você eu)t | s 0 ∈ S},
Onde I = {i 1, · · ·, eu t} é um conjunto fixo de inteiros não negativos tais que 0 ≤
eu 1 < · · · < eu t. Como um caso especial, recuperamos Ψ t = Ψ eu quando I = { 0,. . . , t - 1}
Geração de número aleatório 5

A uniformidade de um conjunto Ψ eu é normalmente avaliado medindo o discrepância


entre a distribuição empírica de seus pontos e a distribuição uniforme
bution over (0, 1) t ( Niederreiter, 1992; Hellekalek e Larcher, 1998; L'Ecuyer e Lemieux,
2002). As medidas de discrepância são equivalentes às estatísticas do teste de qualidade
do ajuste para a distribuição uniforme multivariada. Eles podem ser definidos de muitas
maneiras diferentes. Na verdade, a escolha de uma definição específica normalmente
depende da estrutura matemática do RNG a ser estudado e a razão para isso é muito
pragmática: devemos ser capazes de calcular essas medidas rapidamente, mesmo
quando S tem cardinalidade muito grande. Obviamente, isso exclui qualquer método que
requeira a geração explícita da sequência durante todo o período. A medida de
discrepância selecionada é geralmente calculada para cada conjunto eu em alguma classe
pré-definida J, esses valores são ponderados ou normalizados por fatores que dependem
de EU, e o pior caso (ou média) ao longo J é adotado como um figura de mérito usado
para classificar RNGs. A escolha de J e dos pesos são arbitrários.
Tipicamente, J conteria conjuntos eu de tal modo que t e eu t - eu 1 são bastante pequenos.
Exemplos de tais cifras de mérito serão dados quando discutirmos classes específicas
de RNGs.

2.4 Teste Estatístico

Bons RNGs são projetados com base na análise matemática de suas propriedades,
então implementados e submetidos a baterias de testes estatísticos empíricos.
Esses testes tentam detectar evidências empíricas contra a hipótese nula H 0:
"a você eu são realizações de iid VOCÊ( 0, 1) variáveis aleatórias. ” Um teste pode ser
definido por qualquer função T que mapeia uma sequência você 0, você 1,. . . em (0, 1) para um
número real X, e para o qual uma boa aproximação está disponível para a distribuição
da variável aleatória X sob H 0 Para que o teste seja implementável, X devo
dependem apenas de um número finito (mas talvez aleatório) de você eu 's. Passar em
muitos testes pode melhorar a confiança de alguém no RNG, mas nunca garante que
o RNG é infalível para todos os tipos de simulações.
Construindo um RNG que passa em todos os testes estatísticos é um sonho impossível.
Considere, por exemplo, a classe de todos os testes que examinam o primeiro (a maioria dos
ni fi cante) b pedaços de n valores de saída sucessivos, você 0,. . . , você n - 1, e retornar um binário
valor X ∈ { 0, 1}. Selecione α ∈ ( 0, 1) para que αb n é um inteiro e deixa T n, b, α sejam os testes
desta classe que retornam X = 1 para exatamente αb n do b n possível
sequências de saída. Podemos dizer que a sequência falha o teste quando X = 1
O número de testes em T n, b, α é igual ao número de maneiras de escolher αb n
objetos distintos entre b n Os objetos escolhidos são as sequências que falham no
teste. Agora, para qualquer sequência de saída dada, o número de tais testes que
retornam 1 para esta sequência particular é igual ao número de maneiras de escolher o
outro αb n - 1 sequência que também falhou no teste. Este é o número de maneiras de
escolher αb n - 1 objeto distinto entre b n - 1. Em outras palavras, como apontado por Leeb
(1995), toda seqüência de saída falha exatamente no mesmo número de testes! Este
resultado não deve ser surpreendente. Visto de um ângulo diferente, é
essencialmente uma reafirmação do fato bem conhecido de que sob H 0, cada um dos b n
6 Pierre L'Ecuyer

possíveis sequências têm a mesma probabilidade de ocorrer, portanto, pode-se argumentar que nenhuma
deve ser considerada mais aleatória do que a outra (Knuth, 1998).
Esse ponto de vista parece levar a um beco sem saída. Para que os testes estatísticos sejam
significativos, todos os testes não devem ser considerados em pé de igualdade. Então, quais são mais
importantes? Qualquer resposta certamente está contaminada por sua parcela de arbitrariedade. No
entanto, para grandes valores de n, o número de testes é enorme e todos, exceto uma pequena
fração, são muito complicados até para serem implementados. Então, podemos dizer que ruim RNGs
são aqueles que falham em testes simples, enquanto Boa RNGs falham apenas em testes complicados
que são difíceis de encontrar e executar. Esse compromisso de bom senso geralmente foi adotado de
uma forma ou de outra.
A experiência mostra que RNGs com períodos muito longos, boa estrutura de
o conjunto deles Ψ t, e com base em recorrências que não são muito simplistas, passam nos testes
mais razoáveis, enquanto RNGs com períodos curtos ou estruturas ruins são normalmente
almente fácil de quebrar por meio de testes estatísticos padrão. Para aplicações
sensíveis, é uma boa idéia, quando isso for possível, aplicar testes estatísticos adicionais
projetados em estreita relação com a variável aleatória de interesse (por exemplo, com
base em um simplificação do modelo estocástico que está sendo simulado e para o qual a
distribuição teórica pode ser calculada).
Nossa discussão sobre testes estatísticos continua na Seção 6

2.5 Geradores criptograficamente fortes

Uma maneira de definir um RNG ideal seria que nenhum teste estatístico pode distinguir
sua sequência de saída de um iid VOCÊ( 0, 1) sequência. Se um tempo de computação
ilimitado estiver disponível, nenhum RNG de estado finito pode satisfazer esse requisito,
porque, executando-o por tempo suficiente, pode-se eventualmente descobrir sua
periodicidade. Mas e se impormos um limite ao tempo de computação? Isso pode ser
analisado formalmente no quadro da assintótica complexidade computacional teoria, sob
a conhecida suposição de “esboço” de que algoritmos de tempo polinomial são práticos e
outros não.
Considere uma família de RNGs { G k = ( S k, µ k, f k, você k, g k), k = 1, 2,. . .} Onde
S k de cardinalidade 2 k ( ou seja, G k tem um k- estado do bit). Suponha que as funções de
transição e saída f e g pode ser calculado no tempo limitado por um polyno-
mial em k. Deixar T ser a classe de testes estatísticos executados no tempo limitado por
um polinômio em k e tente diferenciar entre a sequência de saída do RNG e um iid VOCÊ( 0,
1) sequência. A família RNG é chamada tempo polinomial perfeito se houver uma
constante ε> 0 tal que para todos k, nenhum teste em T pode diferenciar corretamente
com probabilidade maior que 1/2 + e - kε. Isso é equivalente
a pedir que nenhum algoritmo de tempo polinomial possa prever qualquer bit de você eu
com probabilidade de sucesso maior que 1/2 + e - kε, depois de observar você 0,. . . , você eu - 1
Isso associa imprevisibilidade com uniformidade e independência estatística. Para
as provas e detalhes adicionais, ver, por exemplo, Blum et al. (1986); L'Ecuyer e
Proulx (1989); Lagarias (1993) e Luby (1996). Essa estrutura teórica foi usada para
definir uma noção de RNG confiável no contexto da criptografia. Mas a garantia é
apenas assintótica; não diz necessariamente o que
Geração de número aleatório 7

valor de k é grande o suficiente para que o RNG seja seguro na prática. Além disso, famílias
RNG específicas têm se mostrado perfeitas em tempo polinomial apenas sob conjecturas ainda
não comprovadas. Até agora, ninguém foi capaz de provar nem mesmo sua existência. A
maioria dos RNGs discutidos no restante deste capítulo são conhecidos não para ser perfeito
em tempo polinomial. No entanto, eles são rápidos, convenientes e têm propriedades
estatísticas boas o suficiente quando seus parâmetros são escolhidos com cuidado.

Módulo de 3 recorrências lineares m

3.1 O gerador recursivo múltiplo

Os RNGs mais usados são baseados na recorrência linear

x i = ( uma 1 x eu - 1 + · · · + uma k x eu - k) mod m, (2)

Onde m e k são inteiros positivos chamados de módulo e a pedido, e


a coeficientes uma 1,. . . , uma k estão dentro Z m, interpretado como o conjunto {0,. . . , m - 1} em
que todas as operações são realizadas com módulo de redução m. O Estado
na etapa eu é s i = x i = ( x eu - k + 1,. . . , x eu) T. Quando m é um número primo, o
anel finito Z m é um campo finito e é possível escolher os coeficientes uma j
de modo que a duração do período alcance ρ = m k - 1 (o maior valor possível)
(Knuth, 1998). Esta duração máxima do período é alcançada se e somente se o
polinômio característico da recorrência, P (z) = z k - uma 1 z k - 1 - · · · - uma k,
é um polinômio primitivo sobre Z m, ou seja, se e somente se o menor inteiro positivo
ν de tal modo que ( z ν mod P (z)) mod m = 1 é ν = m k - 1. Knuth (1998)
explica como verificar isso para um determinado P (z). Para k> 1, para P (z) ser um
polinômio primitivo, é necessário que uma k e pelo menos outro coeficiente
uma j ser diferente de zero. Encontrar polinômios primitivos desta forma é geralmente fácil e
eles produzem a recorrência simplificada:

x n = ( uma r x n - r + uma k x n - k) mod m. (3)

UMA gerador recursivo múltiplo ( MRG) usa (2) com um grande valor de m
e define a saída como você i = x eu/ m. Para k = 1, este é o clássico gerador congruencial
linear ( LCG). Na prática, a função de saída é modi fi cada
ligeiramente para se certificar de que você eu nunca assume o valor 0 ou 1 (por exemplo, pode-se definir
você i = ( x i + 1) / ( m + 1), ou você i = x eu/( m + 1) se x eu> 0 e você i = m / (m + 1) caso
contrário), mas para simplificar a análise teórica, seguiremos o comum
convenção de assumir que você i = x eu/ m ( em qual caso você eu faz tome o valor 0
ocasionalmente).

3.2 A Estrutura da Rede

Deixar e eu denotar o eu o vetor unitário em k dimensões, com 1 na posição eu e 0 em


outro lugar. Denotado por x eu, 0, x eu, 1, x eu, 2,. . . os valores de x 0, x 1, x 2,. . . produzido
8 Pierre L'Ecuyer

pela recorrência (2) quando o estado inicial x 0 é e eu. Um estado inicial arbitrário
x 0 = ( z 1,. . . , z k) T pode ser escrito como a combinação linear z 1 e 1 + · · · +
z k e k e a sequência correspondente é uma combinação linear das sequências
( x eu, 0, x eu, 1,. . .), com redução do módulo de coordenadas m. Por outro lado, qualquer
combinação linear de módulo reduzido m é uma sequência que pode ser obtida
de algum estado inicial x 0 ∈ S = Z k m. Se dividirmos tudo por m nós encontramos
que para o MRG, para cada t ≥ 1, Ψ t = eu t ∩ [ 0, 1) t Onde
{ }
∑t
eu t = v = z eu v eu | z eu ∈ Z,
i=1

é um t- dimensional treliça dentro R t, com base

v 1 = ( 1, 0,. . . , 0, x 1, k,. . . , x 1, t - 1) T / m
. .
. .
. .

v k = ( 0, 0,. . . , 1, x k, k,. . . , x k, t - 1) T / m
v k + 1 = ( 0, 0,. . . , 0, 1,. . . , 0) T
. .
. .
. .

v t = ( 0, 0,. . . , 0, 0,. . . , 1) T.

Para t ≤ k, L t contém todos os vetores cujas coordenadas são múltiplos de 1 / m. Para


t> k, contém uma fração m k - t desses vetores.
Esta estrutura de rede implica que os pontos de Ψ t são distribuídos de acordo
com um padrão muito regular, em hiperplanos paralelos equidistantes. Gráfico
ilustrações disso, geralmente para LCGs, podem ser encontradas em uma miríade de
papéis e livros; por exemplo, Gentle (2003); Knuth (1998); Law e Kelton (2000), e
L'Ecuyer (1998). Defina o treliça dupla para eu t como

eut =∗{ h ∈ R t: h T v ∈ Z para todos v ∈ eu t}.

Cada h ∈ eu ∗ té um vetor normal que define uma família de paralelos equidistantes


hiperplanos, à distância 1 / ‖ h ‖ 2 separados, e esses hiperplanos cobrem todos os
pontos de eu t a não ser que h é um múltiplo inteiro de algum outro vetor h ′ ∈ eu ∗ t.
Portanto, se ` t̀ é o comprimento euclidiano do menor vetor diferente de zero h dentro eu ∗ t,
então há uma família de hiperplanos na distância 1 / ` t̀ além disso, cobrem todos os
os pontos de eu t. Um pequeno ` t̀ significa fatias grossas de espaço vazio entre o uniforme)
hiperplanos e queremos evitar isso. Um grande ` t̀ significa um melhor (mais valor de 1 / ` t̀ é
cobertura do hipercubo unitário pelo conjunto de pontos Ψ t. Computando o
freqüentemente chamado de teste espectral ( Knuth, 1998; Fishman, 1996). defasagens
A propriedade reticulado também se aplica aos conjuntos de pontos Ψ eu formado por valores em
arbitrárias definidas por um conjunto fixo de índices I = {i 1, · · ·, eu t}. Um tem Ψ I =
eu eu ∩ [ 0, 1) t para alguma treliça eu EU , e a maior distância entre sucessivos
hiperplanos para uma família de hiperplanos que cobrem todos os pontos de eu eu é 1 / ` EU ,
Geração de número aleatório 9

onde ` EU é o comprimento euclidiano do menor vetor diferente de zero em eu ∗ EU , o duplo


treliça para eu EU .
A treliça eu eu e seu dual pode ser construído conforme explicado em Couture e
L'Ecuyer (1996) e L'Ecuyer e Couture (1997). Encontrando o mais curto
vetor diferente de zero em uma rede com base v 1,. . . , v t pode ser formulado como um problema
de programação inteira com uma função objetivo quadrática:

∑t t∑
Minimizar ‖ v ‖ 2 = z eu eu
v Tv j z j
i=1j=1

sujeito a z 1,. . . , z t inteiros e nem todos zero. Este problema pode ser resolvido por um
algoritmo branch-and-bound (Fincke e Pohst, 1985; L'Ecuyer e Couture,
1997; Tezuka, 1995).
Para qualquer dimensão t e m k pontos por unidade de volume, há um
limite superior absoluto no melhor valor possível de ` EU ( Conway e Sloane,
1999; Knuth, 1998; L'Ecuyer, 1999b). Deixe ` ∗ ̀ t ( m k) denotam esse limite superior.
Para definir uma figura de mérito que leve em consideração vários conjuntos EU, em diferente
número de dimensões, é prática comum dividir ` EU por um limite superior, a fim de
obter um valor padronizado entre 0 e 1, e então tomar o
pior caso em uma determinada aula J de conjuntos EU. Isso dá uma figura de mérito da forma

M J = min |I|( m k).


eu ∈J ` Ì / ` ∗ ̀

Um valor de M J muito perto de zero significa que eu eu tem uma estrutura de rede ruim para pelo
menos um dos conjuntos selecionados EU. Queremos um valor o mais próximo possível de 1.
Pesquisas de computador para bons MRGs com relação a este critério foram
relatadas por L'Ecuyer et al. (1993); L'Ecuyer e Andres (1997); L'Ecuyer (1999a), por
exemplo. Na maioria dos casos, J eram simplesmente os conjuntos do formulário I =
{ 1,. . . , t} para t ≤ t 1, Onde t 1 era um número inteiro arbitrário variando de 8 a
45. L'Ecuyer e Lemieux (2000) também consideram os pequenos conjuntos dimensionais eu
com índices não muito distantes. Eles sugerem tomar J = {{ 0, 1,. . . , i}: i <
t 1} ∪ {{ eu 1, eu 2}: 0 = eu 1 < eu 2 < t 2} ∪ · · · ∪ {{ eu 1,. . . , eu d}: 0 = eu 1 <. . . < eu d < t d}
para alguns inteiros positivos d, t 1,. . . , t d. Também podemos obter uma média ponderada
em vez do mínimo na definição de M J.
Uma observação importante é que para t> k, a t- vetor dimensional h =
( - 1, uma 1,. . . , uma k, 0,. . . , 0) T sempre pertencer a eu ∗ t, porque para qualquer vetor v ∈ eu t,
o primeiro k + 1 coordenada de m v deve satisfazer a recorrência (2), o que implica que ( - 1,
uma 1,. . . , uma k, 0,. . . , 0) v deve ser um número inteiro. Portanto, sempre se tem
` 2̀t ≤ 1 + uma 2 1+· · · + uma 2 k. Da mesma forma, se eu contém 0 e todos os índices j de tal modo que
uma k - j 6 = 0, então ` 2̀ eu ≤ 1 + uma 2
1 + · · · + uma 2k ( L'Ecuyer, 1997). Isso significa que o
soma dos quadrados dos coeficientes uma j deve ser grande se quisermos ter alguma
chance de que a estrutura da rede seja boa.
Construir MRGs com apenas dois coeficientes diferentes de zero e tomar esses
coeficientes pequenos tem sido uma ideia muito popular, porque torna a
implementação mais fácil e rápida (Deng e Lin, 2000; Knuth, 1998). Contudo,
10 Pierre L'Ecuyer

MRGs assim obtidos têm uma estrutura ruim. Como ilustração do pior caso,
considere o aditivo ou subtrativo amplamente disponível lagged-Fibonacci gerador,
com base na recorrência (2) onde os dois coeficientes uma r e uma k são ambos
igual a ± 1. Neste caso, sempre que eu contém {0, k - r, k}, um √ tem ` 2̀ eu ≤ 3,
então a distância entre os hiperplanos é de pelo menos 1/3. Em particular, para
I = { 0, k - r, k}, todos os pontos de Ψ EU ( além do vetor zero) estão contidos em apenas
dois planos! Este tipo de estrutura pode ter um efeito dramático
em certos problemas de simulação e é um bom motivo para ficar longe desses geradores
Fibonacci defasados, independentemente de seus parâmetros.
Problema semelhante ocorre para o “MRG rápido” proposto por Deng e Lin
(2000), baseado na recorrência

x i = ( - x eu - 1 + machado eu - k) mod m = ((m - 1) x eu - 1 + machado eu - k) mod m,

com uma 2 < m. Se uma é pequeno, o limite ` 2̀ eu ≤ 1+ uma 2 implica uma estrutura de rede ruim
para I = { 0, k - 1, k}. Uma análise mais detalhada de L'Ecuyer e Touzin (2004) mostra
que este tipo de gerador não pode ter uma boa estrutura de rede mesmo que a
condição uma 2 < m é removido. Outro caso especial proposto por Deng e Xu (2003)
tem a forma

x i = machado eu - j · · · + x eu - j t) mod m.
2+ (4)

Neste caso, para I = { 0, k - j t - 1,. . . , k - j 2, k}, os vetores (1, uma, . . . , uma) e


( uma ∗, 1,. . . , 1) ambos pertencem à rede dual eu EU ∗ , Onde uma ∗ é o multiplicativo

inverso de uma módulo m. Então nem uma nem uma ∗ deve ser pequeno.
Para contornar este problema estrutural quando eu contém certos conjuntos de
índices, Lü ¨scher (1994) e Knuth (1998) recomendam pular alguns dos valores de
saída para quebrar os vetores ruins. Para o gerador de Fibonacci com lag, por
exemplo, pode-se gerar k valores sucessivos produzidos pela recorrência, em
seguida, pule o próximo d valores, imprima o próximo k, pule o próximo
d, e assim por diante. Um grande valor de d ( por exemplo, d = 5 k ou mais) pode se livrar da
estrutura ruim, mas retarda o gerador. Veja Wegenkittl e Matsumoto (1999) para uma
discussão mais aprofundada.

3.3 Técnicas de Implementação MRG

O módulo m é frequentemente considerado como um grande número primo próximo ao maior


inteiro representável diretamente no computador (por exemplo, igual ou próximo a 2 31 - 1 para
Computadores de 32 bits). Desde cada x eu - j pode ser tão grande quanto m - 1, é preciso ter cuidado
em computar o lado direito de (2) porque o produto uma j x eu - j normalmente não é
representável como um inteiro comum. Várias técnicas para computar este
módulo de produto m são discutidos e comparados por Fishman (1996); L'Ecuyer e
Tezuka (1991); L'Ecuyer (1999a) e L'Ecuyer e Simard (1999). Observação
isso se uma j = m - uma ′ j> 0,
usando uma j é equivalente a usar o coeficiente negativo
- umaj,′ o
que às vezes é mais conveniente do ponto de vista de implementação. A
seguir, assumimos que uma j pode ser positivo ou negativo.
Geração de número aleatório 11

Uma abordagem é realizar o módulo aritmético m em aritmética de ponto fl utuante


de 64 bits (precisão dupla) (L'Ecuyer, 1999a). Sob esta representação, assumindo que o
padrão de ponto flutuante IEEE usual é respeitado, todos os números inteiros positivos
até 2 53 são representados exatamente. Então, se cada coeficiente
uma j é selecionado para satisfazer | uma j | ( m - 1) ≤ 2 53, o produto | uma j | x eu - j sempre será
ser representado exatamente e z j = | uma j | x eu - j mod m pode ser calculado pelas
instruções
y = | a j | x eu - j; z j = y - m b a / m c.
Da mesma forma, if (| uma 1 + · · · + | uma k |) ( m - 1) ≤ 2 53, uma 1 x eu - 1 + · · · + uma k x eu - k sempre será
representado exatamente.
Uma segunda técnica, chamada fatoração aproximada ( L'Ecuyer e Cˆôt´é,
1991), usa apenas a representação inteira e funciona sob a condição

que | uma j | = eu ou | uma j | = b mi c para algum inteiro i <m. Um pré-computador
q j = b m / | a j | c e r j = m mod | uma j |. Então, z j = | uma j | x eu - j mod m pode ser calculado
por

y = b x eu - j / q j c; z = | a j | ( x eu - j - yq j) - ano j;
E se z < Então 0 z j = z + m senão z j = z.

Todas as quantidades envolvidas nesses cálculos são inteiros entre - m e


m, então nenhum transbordamento pode ocorrer se m pode ser representado como um número inteiro comum (por
exemplo, m < 2 31 em um computador de 32 bits).
O decomposição de potências de dois abordagem seleciona coeficientes uma j que pode ser
escrita como a soma ou diferença de um pequeno número de potências de 2 (Wu, 1997;
L'Ecuyer e Simard, 1999; L'Ecuyer e Touzin, 2000). Por exemplo, um
pode levar uma j = ± 2 q ± 2 r e m = 2 e - h para alguns inteiros positivos q, r,
e, e h. Para calcular y = 2 q x mod m, decompor x = z 0 + 2 e - q z 1 ( Onde
z 0 = x mod 2 e - q) e observe que

y = 2 q ( z 0 + 2 e - q z 1) mod ( 2 e - h) = ( 2 q z 0 + hz 1) mod ( 2 e - h).

Suponha agora que

h < 2q e h ( 2 q - ( h + 1) 2 - e + q) < m. (5)

Então, 2 q z 0 < m e hz 1 < m, tão y pode ser calculado por turnos, máscaras, adições,
subtrações e uma única multiplicação por h. Resultados intermediários
nunca exceda 2 m - 1. As coisas simplificam ainda mais se q = 0 ou q = 1 ou h = 1
Para h = 1, y é obtido simplesmente trocando os blocos de bits z 0 e z 1
(Wu, 1997). Foi apontado por L'Ecuyer e Simard (1999) que
LCGs com parâmetros do formulário m = 2 e - 1 e a = ± 2 q ± 2 r têm propriedades estatísticas
ruins porque a recorrência não “mistura os bits” bem o suficiente. No entanto, MRGs
bons e rápidos podem ser obtidos por meio do método de decomposição potência de
dois, conforme explicado em L'Ecuyer e Touzin (2000).
Outra ideia interessante para melhorar a eficiência é levar todos os coeficientes diferentes de zero
e ffi cientes uma j igual à mesma constante uma ( Marsaglia, 1996; Deng e Xu,
12 Pierre L'Ecuyer

2003). Então, calcular o lado direito de (2) requer uma única multiplicação. Deng e
Xu (2003) fornecem conjuntos de parâmetros específicos e implementações
concretas para MRGs deste tipo, para m perto de 2 31, e k = 102, 120 e
1511.
Alguém pode ficar tentado a tomar m igual a uma potência de dois, digamos m = 2 e,
porque então o “ mod m ”Operação é muito mais fácil: basta manter o e
bits menos significativos e mascarar todos os outros. No entanto, tomar um módulo
de potência de dois não é recomendado porque tem várias desvantagens fortes em
termos de qualidade do RNG (L'Ecuyer, 1990, 1998). Em particular, os bits menos
significativos têm periodicidade muito curta e a duração do período de recorrência
(2) não pode exceder (2 k - 1) 2 e - 1 E se k> 1 e 2 e - 2 E se k = 1 e
e ≥ 4. A duração máxima do período alcançável com k = 7 e m = 2 31, por exemplo, é
mais do que 2 180 vezes menor do que a duração máxima do período alcançável com k
= 7 e m = 2 31 - 1 (um número primo).

3.4 MRGs e LCGs combinados

As condições que fazem as implementações do MRG rodarem mais rápido (por exemplo,
apenas dois coeficientes diferentes de zero, ambos próximos de zero) estão geralmente em
conflito com aqueles necessários para ter uma boa estrutura de rede e robustez estatística. MRGs
combinados são uma solução para este problema. Considerar J MRGs distintos evoluindo em
paralelo, com base nas recorrências

x j, i = ( uma j, 1 x j, eu - 1 + · · · + uma j, k x j, eu - k) mod m j (6)

Onde uma j, k 6 = 0, para j = 1,. . . , J. Deixar δ 1,. . . , δ J ser números inteiros arbitrários,

z i = ( δ 1 x 1, i + · · · + δ J x J, i) mod m 1, você i = z eu/ m 1, (7)

e
C i = ( δ 1 x 1, eu/ m 1 + · · · + δ J x J, i / m J) mod 1 (8)
Isso define dois RNGs, com sequências de saída { você eu, eu ≥ 0} e { C eu, eu ≥ 0}
Suponha que o m j são pares relativamente primos, que δ j e m j não tem fator
comum para cada j, e que cada recorrência (6) é puramente periódica
com duração do período ρ j. Deixar m = m 1 · · · m J e deixar ρ seja o menos comum
múltiplo de ρ 1,. . . , ρ J. Nessas condições, os seguintes resultados foram comprovados
por L'Ecuyer e Tezuka (1991) e L'Ecuyer (1996a): (a) a sequência
(8) é exatamente equivalente à sequência de saída de um MRG com (composto)
módulo m e coeficientes uma j que pode ser calculado explicitamente como explicado em
L'Ecuyer (1996a); (b) as duas sequências em (7) e (8) têm duração de período
ρ; e (c) se ambas as sequências têm o mesmo estado inicial, então você i = C i + ε eu
onde max eu ≥ 0 | ε eu | pode ser delimitado explicitamente por uma constante ε que é muito
pequeno quando o m j estão próximos um do outro.
Assim, esses MRGs combinados podem ser vistos como formas práticas de implementação
mentar um MRG com um grande m e vários coeficientes grandes diferentes de zero. O
Geração de número aleatório 13

A ideia é selecionar habilmente os componentes de modo que: (1) cada um seja fácil de implementar de forma
eficiente (por exemplo, tem apenas dois pequenos coeficientes diferentes de zero) e (2) o MRG que corresponde à
combinação tem uma boa estrutura de rede. Se cada
m j é primo e se cada componente j tem duração máxima de período ρ j = m k j- 1,
então cada ρ j é par e ρ não pode exceder ρ 1 · · · ρ J / 2 J - 1 Tabelas de bons parâmetros para
MRGs combinados de diferentes tamanhos que alcançam este limite superior
são fornecidos em L'Ecuyer (1999a) e L'Ecuyer e Touzin (2000), junto com
implementações de C.

3.5 Pulando à Frente

A recorrência (2) pode ser escrita em forma de matriz como



0 1 ··· 0•
. .
• . ... . •
. . •
x i = Machado eu - 1 mod m = •
• x eu - 1 mod m.
0 0 ··· 1•
uma k uma k - 1 · · · uma 1

Para saltar em frente diretamente de x eu para x i + ν, para um número inteiro arbitrário ν, basta
explorar o relacionamento

x i + ν = UMA ν x eu mod m = ( UMA ν mod m) x eu mod m.

Se isso for feito várias vezes para o mesmo ν, o Matrix UMA ν mod m pode ser
pré-computado de uma vez por todas. Para um grande ν, isso pode ser feito em O ( registro 2 ν) multiplicações
de matrizes por meio de um algoritmo padrão de divisão e conquista (Knuth, 1998):
{
UMA ν mod m = ( UMA ν / 2 mod m) ( UMA ν / 2 mod m) mod m E se ν é uniforme;
A (A ν - 1 mod m) mod m E se ν é estranho.

3.6 Recorrências Lineares com Carry

Esses tipos de recorrências foram introduzidos por Marsaglia e Zaman (1991) para
obter um grande período mesmo quando m é uma potência de dois (nesse caso, a
implementação pode ser mais rápida). Eles foram estudados e generalizados por
Tezuka et al. (1994); Couture e L'Ecuyer (1994, 1997) e Goresky e Klapper (2003). A
ideia básica é adicionar um carregar à recorrência linear (2). A forma geral deste
RNG, chamada multiplique-com-transporte ( MWC), pode ser escrito como

x i = ( uma 1 x eu - 1 + · · · + uma k x eu - k + c eu - 1) d mod b, (9)


c i = b ( uma 0 x i + uma 1 x eu - 1 + · · · + uma k x eu - k + c eu - 1) / b c, (10)
∑∞
você i = x eu - + 1 b -, (11)
`= 1
14 Pierre L'Ecuyer

Onde b é um número inteiro positivo (por exemplo, uma potência de dois), uma 0,. . . , uma k são inteiros
arbitrários tais que uma 0 é relativamente principal para b, e d é o inverso multiplicativo
de - uma 0 módulo b. O estado na etapa eu é s i = ( x eu - k + 1,. . . , x eu, c eu) T. Na prática, a soma
em (11) é truncada para alguns termos (pode ser um único termo se b é
grande), mas a análise teórica é muito mais fácil para a soma infinita.
∑k
Definir m = `= 0 à b` e deixar uma seja o inverso de b no módulo aritmético m,
assumindo por agora que m> 0. Um resultado importante provado em Tezuka et al. (1994);
Couture e L'Ecuyer (1997), e Goresky e Klapper (2003) é que se o
estados iniciais concordam, a sequência de saída { você eu, eu ≥ 0} é exatamente o mesmo
que o produzido pelo LCG com módulo m e multiplicador uma. Portanto, o
MWC pode ser visto como uma maneira inteligente de implementar um LCG com
módulo muito grande. Foi demonstrado por Couture e L'Ecuyer (1997) que o valor
de ` t̀ para este LCG satisfaz ` 2̀ t ≤ uma 2 0 + · · · + uma 2 k para t ≥ k, o que significa que
a estrutura da rede será ruim a menos que a soma dos quadrados dos coeficientes uma j é
grande.
Nas propostas originais de Marsaglia e Zaman (1991), denominado adicionar com
carregar e subtrair com emprestar, um tem - uma 0 = ± uma r = ± uma k = 1 para alguns r <k
e os outros coeficientes uma j são zero, então ` 2̀ t ≤ 3 para t ≥ k e o gerador
tem essencialmente o mesmo defeito estrutural que o gerador aditivo de Fibonacci
defasado. Na versão estudada por Couture e L'Ecuyer (1997), foi
assumiu que - uma 0 = d = 1. Então, a duração do período não pode exceder ( m - 1) / 2 se b é uma
potência de dois. Uma implementação concreta foi dada naquele documento.
Goresky e Klapper (2003) apontaram que a duração máxima do período de
ρ = m - 1 pode ser alcançado permitindo uma visão mais geral uma 0 Eles forneceram
parâmetros específicos que fornecem um período máximo para b variando de 2 21 para 2 35

e ρ até aproximadamente 2 2521.

4 geradores baseados em recorrências Módulo 2

4.1 Uma Estrutura Geral

Parece natural explorar o fato de que os computadores funcionam em aritmética


binária e projetar RNGs definidos diretamente em termos de cadeias de bits e
sequências. Fazemos isso sob a seguinte estrutura, retirada de L'Ecuyer e Panneton
(2002). Deixar F 2 denotam o campo finito com dois elementos, 0 e 1, em que as
operações são equivalentes ao módulo de adição e multiplicação 2. Considere
o RNG definido por uma recorrência linear de matriz ao longo F 2, do seguinte modo:

x i = Machado eu - 1, (12)
y i = Bx eu, (13)
∑C
você i = y eu, ` - 1 2 - =. y eu, 0 y eu, 1 y eu, 2 · · ·, (14)
`= 1
Geração de número aleatório 15

Onde x i = ( x eu, 0,. . . , x eu, k - 1) T ∈ F k 2 é o k- pedaço vetor de estado na etapa eu, y i =

( y eu, 0,. . . , y eu, w - 1) T ∈ F C 2 é o C- pedaço vetor de saída na etapa eu, k e C estão


inteiros positivos, UMA é um k × k matriz de transição com elementos em F 2, B é um
C × k matriz de transformação de saída com elementos em F 2, e você eu ∈ [ 0, 1) é o
resultado na etapa eu. Todas as operações em (12) e (13) são realizadas em F 2
É bem conhecido (Niederreiter, 1992; L'Ecuyer, 1994) que quando o x eu obedece
(12), para cada j, a sequência { x eu j, eu ≥ 0} segue a recorrência linear

x i, j = ( α 1 x eu - 1, j + · · · + α k x eu - k, j) mod 2, (15)

cujo polinômio característico P (z) é o polinômio característico de UMA,


ou seja,

P (z) = det ( UMA - z I) = z k - α 1 z k - 1 - · · · - α k - 1 z - α k,


Onde eu é a matriz de identidade e cada α j é em F 2 As sequências { y eu j, eu ≥ 0}, para 0 ≤ j
<w, também obedecem à mesma recorrência (embora alguns deles possam
seguem recorrências de ordem mais curta também em certas situações, dependendo
B). Nós assumimos que α k = 1, de modo que a recorrência (15) tenha pedido k e é puramente
periódico. A duração do seu período é 2 k - 1 (ou seja, máximo) se e somente se P (z)
é um polinômio primitivo sobre F 2 ( Niederreiter, 1992; Knuth, 1998).
Para saltar em frente diretamente de x eu para x i + ν com este tipo de gerador,
basta para pré-calcular a matriz UMA ν ( dentro F 2) e então multiplicar x eu por esta matriz.

Várias classes populares de RNGs se encaixam neste quadro como casos


especiais, por meio de escolhas apropriadas das matrizes UMA e B. Isso inclui o
Tausworthe ou LFSR, polinomial LCG, GFSR, GFSR torcido, Mersenne twister,
múltiplos geradores de matriz recursiva e combinações destes (L'Ecuyer e
Panneton, 2002; Matsumoto e Nishimura, 1998; Niederreiter, 1995; Tezuka,
1995). Detalhamos alguns deles depois de discutir medidas de uniformidade.

4.2 Medidas de Uniformidade

A uniformidade dos conjuntos de pontos Ψ eu produzido por RNGs com base em recorrência linear
acabou F 2 é geralmente avaliada por medidas de equidistribuição de fi nidas como
segue (L'Ecuyer, 1996b; L'Ecuyer e Panneton, 2002; L'Ecuyer, 2004;
Tezuka, 1995). Para um vetor arbitrário q = ( q 1,. . . , q t) de inteiros não negativos,
particione o hipercubo unitário [0, 1) t em 2 q j intervalos do mesmo comprimento
ao longo do eixo j, para cada j. Isso determina uma partição de [0, 1) t em 2 q 1+ ··· + q t
caixas retangulares do mesmo tamanho e formato. Chamamos esta partição de q-
equidissecção do hipercubo unitário.
Para algum conjunto de índice I = {i 1,. . . , eu t}, E se Ψ eu tem 2 k pontos, nós dizemos que Ψ eu é
q- equidistribuído na base 2 se houver exatamente 2 q pontos em cada caixa do
q- equidissecção, onde k - q = q 1 + · · · + q t. Isso significa que entre os 2 k
pontos ( x j 1,. . . , x j) de Ψ EU
t
, se considerarmos o primeiro q 1 pedaços de x j 1, o primeiro q 2
pedaços de x j 2,. . . , e o primeiro q t pedaços de x j, cada
t
um dos 2 k - q possibilidades ocorrem
exatamente o mesmo número de vezes. Isso só é possível se q ≤ k.
16 Pierre L'Ecuyer

O q- equidistribuição de Ψ eu depende apenas do primeiro q j pedaços de x eu para


1 ≤ j ≤ t, pelos pontos ( x eu 1,. . . , x eu ) que pertencem
t
a Ψ EU . O vetor de t j hese
q 1 + · · · + q t = k - q bits sempre podem ser expressos como uma função linear do k
bits do estado inicial x 0, ou seja, como M q x 0 para alguns ( k - q) × k matriz binária
M q, e é facilmente visto que Ψ eu é q- equidistribuído se e somente se M q tem classificação
completa k - q. Isso fornece uma maneira fácil de verificar a equidistribuição (Fushimi,
1983; L'Ecuyer, 1996b; Tezuka, 1995).
Se Ψ eu é (`,....,`) ̀-equidistribuído para alguns ` ≥ 1, é chamado t- distribuído com
`bits de precisão, ou ( t, `) - equidistribuído ( L'Ecuyer, 1996b). O maior
valor de `para o qual isso vale é chamado de resolução do conjunto Ψ eu e é
denotado por ` EU . Este valor tem o limite superior ` ∗ ̀
t = min ( b k / t c, C). O
lacuna de resolução de Ψ eu é definido como δ I = ` ∗ ̀ t - ` EU . Na mesma linha dos MRGs,
a pior figura de mérito pode ser definida aqui por

∆ J = max
eu ∈J δ EU ,

Onde J é uma classe pré-selecionada de conjuntos de índices EU.


O ponto definido Ψ eu é um ( q, k, t) - rede na base 2 ( frequentemente chamado de ( t, m, s) - rede
no contexto de métodos quase-Monte Carlo, onde uma notação diferente é
usado (Niederreiter, 1992)), se for ( q 1,. . . , q t) - equidistribuído na base 2 para todos os
inteiros não negativos q 1,. . . , q t somando a k - q. Chamamos o menor de
q a q- valor de Ψ EU . Quanto menor for, melhor. Um candidato a figura
de mérito poderia ser o q- valor de Ψ t para algum grande t. Uma grande desvantagem desta
medida é que é extremamente difícil calcular para um bom período de tempo
geradores (para os quais k - q é grande), porque há muitos vetores q para o qual a
equidistribuição precisa ser verificada. Na prática, deve-se se contentar com cifras
de mérito que envolvam um número menor de equidissecções.
Quando δ I = 0 para todos os conjuntos eu do formulário I = { 0,. . . , t - 1}, para 1 ≤ t ≤ k,
o RNG é dito ser maximamente equidistribuído ou assintoticamente aleatório
para o tamanho da palavra W ( L'Ecuyer, 1996b; Tezuka, 1995; Tootill et al., 1973). Esta
propriedade garante equidistribuição perfeita de todos os conjuntos Ψ t, para qualquer partição
do hipercubo da unidade em subcubos de tamanhos iguais, desde que ` ≤ C e o numero
de subcubos não excede o número de pontos em Ψ t. Geradores máximos
equidistribuídos de grande período, juntamente com suas implementações, podem
ser encontrado em L'Ecuyer (1999c); L'Ecuyer e Panneton (2002) e Panneton e
L'Ecuyer (2004), por exemplo.

4.3 Estrutura da rede em espaços de polinômios e séries formais

Os RNGs de fi nidos por meio de (12) - (14) não têm uma estrutura de rede no
espaço real como os MRGs, mas têm uma estrutura de rede em um espaço de série
formal, conforme explicado em Couture e L'Ecuyer (2000); L'Ecuyer (2004); Lemieux
e L'Ecuyer (2003) e Tezuka (1995). O espaço real R é substituído pelo
∑∞
espaço eu 2 de séries de potências formais com coeficientes em F 2, da `= ω x̀ z-
forma para algum inteiro ω. Nesse cenário, as redes têm a forma
Geração de número aleatório 17
• •
• ∑t •
eu t = • v ( z) = h j ( z) v j ( z) tal que cada h j ( z) ∈ F 2 [ z] • ,
j=1

Onde F 2 [ z] é o anel de polinômios com coeficientes em F 2, e a base


vetores v j ( z) estão dentro eu t 2 Os elementos da rede dupla eu ∗ t são os vetores
produto escalar com qualquer vetor de eu t é um polinômio (em
h ( z) dentro eu t 2 cujo

F 2 [ z]). Nós definimos o mapeamento ϕ: eu 2 → R de


(∑ )
∞ ∑∞
ϕ x̀ z - = x̀ 2 -.
`= ω `= ω

Então, verifica-se que o conjunto de pontos Ψ t produzido pelo gerador é igual a


ϕ ( eu t) ∩ [ 0, 1) t. Além disso, as propriedades de equidistribuição examinadas na Seção 4.2 pode
ser expresso em termos de comprimentos dos vetores mais curtos na rede dual,
com definições apropriadas de comprimento (ou norma). Muito da teoria e
algoritmos desenvolvidos para reticulados no espaço real podem ser adaptados a
esses novos tipos de reticulados (Couture e L'Ecuyer, 2000; L'Ecuyer, 2004; Lemieux
e L'Ecuyer, 2003; Tezuka, 1995).

4.4 O Gerador LFSR

O Tausworthe ou registro de deslocamento de feedback linear ( LFSR) gerador


(Tausworthe, 1965; L'Ecuyer, 1996b; Tezuka, 1995) é um caso especial de (12) - (14)
com A = A s 0 ( dentro F 2) para algum número inteiro positivo s, Onde
• •
1
• ... •

UMA 0 =•• • , (16)
• 1•
uma k uma k - 1 . . uma 1

uma 1,. . . , uma k estão dentro F 2, uma k = 1, e todas as entradas em branco na matriz são zeros. Nós
levamos C ≤ k e a matriz B contém o primeiro C linhas do k × k identidade
matriz. O RNG assim obtido pode ser definido de forma equivalente por

x i = uma 1 x eu - 1 + · · · + uma k x eu - k mod 2, (17)


∑C
você i = x é + ̀ - 1 2 -. (18)
`= 1

Aqui, P (z) é o polinômio característico da matriz UMA s 0, não o char


polinômio acterístico da recorrência (17), e a escolha de s é importante para
determinar a qualidade do gerador. Um caso frequentemente encontrado
é quando um único uma j é diferente de zero além de uma k; então, P (z) é um trinômio e
dizemos que temos um baseado em trinômio Gerador LFSR. Esses geradores
18 Pierre L'Ecuyer

são conhecidos por terem deficiências estatísticas importantes (Matsumoto e Kurita,


1996; Tezuka, 1995), mas podem ser usados como componentes de RNGs combinados.
Os geradores LFSR podem ser expressos como LCGs em um espaço de polinômios
(Tezuka e L'Ecuyer, 1991; Tezuka, 1995; L'Ecuyer, 1994). Com esta representação, sua
estrutura de rede, conforme discutido na Seção. 4.3 segue imediatamente.

4.5 O GFSR e o GFSR torcido

Aqui nós levamos UMA Enquanto o pq × pq matriz

• •
eu p S•
• eu p
• •
eu p •
A=• • •
• ... •
• •
eu p

para alguns inteiros positivos p e q, Onde eu p é o p × p matriz de identidade, S é


uma p × p matriz, e a matriz eu p na primeira linha está em colunas ( r - 1) p + 1 para
rp para algum número inteiro positivo r. Muitas vezes, w = p e B contém o primeiro C linhas de
a pq × pq matriz de identidade. Se S é também a matriz de identidade, o gerador assim obtido é
o trinomial baseado registro de mudança de feedback generalizado ( GFSR), para
que x eu é obtido por um bit a bit exclusivo ou de x eu - r e x eu - q. Isso dá um RNG muito rápido,
mas sua duração de período não pode exceder 2 q - 1, porque cada bit
de x eu segue a mesma recorrência binária de ordem k = q, com polinômio
característico P (z) = z q - z q - r - 1
De forma mais geral, podemos definir x eu como o bit a bit exclusivo - ou de x eu - r 1, x eu - r 2,
..., x eu - r d Onde r d = q, de modo que cada pedaço de x eu segue uma recorrência em F 2
cuja característica polinomial P (z) tem d + 1 termos diferentes de zero. No entanto, o
a duração do período ainda é limitada por 2 q - 1, considerando o pq- estado de bits,
devemos esperar um período próximo a 2 pq. Esta foi a principal motivação para o torcido
GFSR ( Gerador TGFSR). Na versão original introduzida por Matsumoto e Kurita
(1992), w = p e a matriz S é
definido como a transposição de UMA 0 em (16), com k substituído por p. O polinômio
característico de UMA é então P (z) = P S ( z q + z m), Onde P S ( z) = z p - uma p z p - 1 -
· · · - uma 1 é o polinômio característico de S, e seu grau é k = pq. Se o
parâmetros são selecionados para que P (z) é primitivo sobre F 2, então o TGFSR tem
duração de período 2 k - 1. Matsumoto e Kurita (1994) apontou importante
fraquezas do TGFSR original e propôs uma versão melhorada que usa uma matriz
bem escolhida B cujas linhas diferem das da identidade. As operações
implementadas por esta matriz são chamadas temperar e seu objetivo é melhorar a
uniformidade dos pontos produzidos pelo RNG. O Mersenne twister ( Matsumoto e
Nishimura, 1998; Nishimura, 2000) é uma variante do TGFSR onde k é ligeiramente
menor que pq e pode ser um número primo. Uma instância específica proposta por
Matsumoto e Nishimura (1998) é
Geração de número aleatório 19

rápido, robusto, tem a enorme duração de período de 2 19937 - 1, e tornou-se bastante


popular.
No método de matriz recursiva múltipla de Niederreiter (1995), a primeira linha de p × p
matrizes em UMA contém matrizes arbitrárias. No entanto, uma implementação rápida
só é possível quando essas matrizes são esparsas e possuem uma estrutura especial.

4.6 Geradores lineares combinados acima F 2

Muitos dos melhores geradores baseados em recorrências lineares ao longo F 2 são


construídos combinando as saídas de dois ou mais RNGs com um simples
estrutura. A ideia é a mesma dos MRGs: selecione componentes simples que possam ser executados
rapidamente, mas de forma que sua combinação tenha uma estrutura mais complicada
e conjuntos altamente uniformes Ψ eu para os conjuntos eu considerado importante.
Considerar J recorrências distintas da forma (12) - (13), onde o j th re
a corrente tem parâmetros ( k, w, A, B) = ( k j, C, UMA j, B j) e estado x j, eu na etapa
eu, para j = 1,. . . , J. A saída do gerador combinado na etapa eu está definido
de

y i = B 1 x 1, eu ⊕ · · · ⊕ B J x J, i, w

você i = y eu, ` - 1 2 -,
`= 1

Onde ⊕ denota a operação bit a bit exclusiva ou. Pode-se mostrar (Tezuka,
1995) que a duração do período ρ deste gerador combinado é o menos comum
múltiplo das durações do período ρ j de seus componentes. Além disso, este gerador
combinado é equivalente ao gerador (12) - (14) com k = k 1 + · · · + k J, A =
diag ( UMA 1,. . . , UMA J), e B = (B 1,. . . , B J).
Com este método, ao selecionar os parâmetros cuidadosamente, a combinação
de geradores LFSR com polinômios característicos P 1 ( z),. . . , P J ( z) dá ainda
outro LFSR com polinômio característico P (z) = P 1 ( z) · · · P J ( z) e duração do período
igual ao produto da duração do período dos componentes
(Tezuka e L'Ecuyer, 1991; Wang e Compagner, 1993; L'Ecuyer, 1996b; Tezuka, 1995).
Tabelas e implementações rápidas de geradores LFSR combinados com
equidistribuição máxima são fornecidas em L'Ecuyer (1996b).
Os geradores twister TGFSR e Mersenne propostos em Matsumoto e Kurita (1994); Matsumoto e
Nishimura (1998) e Nishimura (2000) não podem ser equidistribuídos ao máximo. No entanto,
exemplos concretos de geradores TGFSR combinados equidistribuídos ao máximo com comprimentos
de período próximos a 2 466

e 2 1250 são apresentados em L'Ecuyer e Panneton (2002). Esses geradores têm


a propriedade adicional de que as lacunas de resolução δ eu são zero para uma classe de pequenos conjuntos eu
com índices não muito distantes.
20 Pierre L'Ecuyer

5 RNGs não lineares

Todos os RNGs discutidos até agora são baseados em recorrências lineares e sua
estrutura pode ser considerada muito regular. Existem pelo menos duas maneiras de se
livrar dessa estrutura linear regular: (1) usar uma função de transição não linear f ou (2)
manter a função de transição linear, mas usar uma função de saída não linear g.
Vários tipos de RNGs não lineares foram propostos ao longo dos anos; ver, por exemplo, Blum et al.
(1986); Eichenauer-Herrmann (1995); Eichenauer-Herrmann et al. (1997); Hellekalek e Wegenkittl
(2003); Knuth (1998); L'Ecuyer (1994); Niederreiter e Shparlinski (2002) e Tezuka (1995). Seus
mapeamentos não lineares são definidos de várias maneiras por inversão multiplicativa em um
campo finito, funções quadráticas e cúbicas no anel finito do módulo de inteiros m, e outras
transformações mais complicadas. Muitos deles têm sequências de saída que tendem a se comportar
muito como iid VOCÊ( 0, 1) sequências mesmo durante todo o seu período

comprimento, em contraste com RNGs lineares "bons", cujos conjuntos de pontos Ψ t são muito
mais regulares do que pontos aleatórios típicos (Eichenauer-Herrmann et al., 1997;
L'Ecuyer e Hellekalek, 1998; L'Ecuyer e Granger-Pich´é, 2003; Niederreiter e
Shparlinski, 2002). Por outro lado, suas propriedades estatísticas foram analisadas
apenas empiricamente ou por meio de resultados teóricos assintóticos. Para
RNGs não lineares específicos, a uniformidade dos conjuntos de pontos Ψ t é muito difícil de
medir teoricamente. Além disso, os RNGs não lineares são geralmente significativos
incrivelmente mais lento do que os lineares. Os RNGs recomendados para criptologia são
todos não lineares.
Uma ideia interessante para adicionar não linearidade sem incorrer em uma penalidade de velocidade
excessiva é combinar um pequeno gerador não linear com um gerador linear rápido de longo período (Aiello
et al., 1998; L'Ecuyer e Granger-Pich´é, 2003). L'Ecuyer e Granger-Pich´é (2003) mostram como fazer isso
garantindo teoricamente
as boas propriedades de uniformidade de Ψ t para o gerador combinado. Uma implementação
muito rápida pode ser alcançada usando tabelas pré-computadas para o não linear
componente. Os estudos empíricos sugerem que os geradores combinados linear-não
lineares mistos são mais robustos do que os lineares no que diz respeito aos testes
estatísticos, devido à sua estrutura menos regular.
Vários autores propuseram várias maneiras de combinar RNGs para produzir fluxos
de números aleatórios com menos regularidade e melhores propriedades de
“aleatoriedade”; ver, por exemplo, Collings (1987); Knuth (1998); Gentil (2003); Law e
Kelton (2000); L'Ecuyer (1994); Fishman (1996); Marsaglia (1985), e outras referências aí
fornecidas. Isso inclui shu ffl ing a sequência de saída de um gerador usando outro (ou o
mesmo), alternando entre vários streams, ou apenas adicionando-os de maneiras
diferentes. A maioria dessas técnicas são heurísticas. Eles geralmente melhoram a
uniformidade (empiricamente), mas também podem piorá-la. Para variáveis aleatórias no
sentido matemático, certos tipos de combinações (por exemplo, módulo de adição 1)
podem provavelmente melhorar a uniformidade, e alguns autores usaram esse fato para
argumentar que RNGs combinados são comprovadamente melhores do que seus
componentes sozinhos (Brown e Solomon, 1979; Deng e George, 1990; Marsaglia, 1985;
Gentle, 2003), mas este argumento é
Geração de número aleatório 21

defeituoso porque as sequências de saída de RNGs são determinísticas, não


sequências de variáveis aleatórias independentes. Para avaliar a qualidade de um
gerador combinado, deve-se analisar a estrutura matemática do próprio gerador
combinado ao invés da estrutura de seus componentes (L'Ecuyer, 1996b, a, 1998;
L'Ecuyer e Granger-Pich´é, 2003; Tezuka, 1995).

6 Exemplos de testes estatísticos

Como mencionado anteriormente, um teste estatístico para RNGs é definido por uma variável aleatória
capaz X cuja distribuição sob H 0 pode ser bem aproximado. Quando X pega o valor x, nós
definimos o direito e o esquerdo p- valores do teste por

p R = P [X ≥ x | H 0] e p L = P [X ≤ x | H 0].

Ao testar RNGs, não há necessidade de pré-especificar o nível do teste. Se algum da direita ou


esquerda p- valor é extremamente próximo de zero, por exemplo, menor que 10 - 15, então
é claro que H 0 ( e o RNG) deve ser rejeitado. Quando um suspeito p- valor é obtido, por
exemplo, perto de 10 - 2 ou 10 - 3, pode-se apenas repetir este teste particular um
mais algumas vezes, talvez com um tamanho de amostra maior. Quase sempre, as coisas ficam
mais claras.
A maioria dos testes são definidos particionando as possíveis realizações de ( você 0,. . . ,
você τ - 1) em um número finito de subconjuntos (onde o inteiro τ pode ser aleatório ou
determinística), calculando a probabilidade p j de cada subconjunto j sob H 0, e medir
a discrepância entre essas probabilidades e a frequência empírica
cias de realizações simuladas pelo RNG.
Um caso especial que vem imediatamente à mente é pegar τ = t ( uma constante) e
corte o intervalo [0, 1) em d segmentos iguais para algum número inteiro positivo d,
a fim de particionar o hipercubo [0, 1) t para dentro k = d t subcubos de volume
1 / k. Nós então geramos n pontos você i = ( você ti,. . . , você ti + t - 1) ∈ [ 0, 1) t, para i =
0,. . . , n - 1, e conte o número N j de pontos caindo no subcubo j, para
j = 0,. . . , k - 1. Qualquer medida de distância (ou divergência) entre os números
N j e suas expectativas n / k pode definir uma estatística de teste X. Os testes assim definidos
são geralmente chamados testes seriais de uniformidade (Knuth, 1998; L'Ecuyer
et al., 2002b). Eles podem ser esparso ( E se n / k 1), ou denso E se n / k 1), ou
em algum lugar no meio. Há também sobreposto versões, onde os pontos
são definidos por você i = ( você eu, . . . , você i + t - 1) para i = 0,. . . , n - 1 (eles têm coordenadas
sobrepostas).
Instâncias especiais para as quais a distribuição sob H 0 é bem conhecido são o
qui-quadrado, a entropia empírica (negativa) e o número de colisões
(L'Ecuyer e Hellekalek, 1998; L'Ecuyer et al., 2002b; Read e Cressie,
1988). Para o último, a estatística de teste X é o número de vezes um ponto
cai em um subcubo que já tinha um ponto nele. Sua distribuição em H 0 é
aproximadamente Poisson com média λ 1 = n 2 / ( 2 k), E se n é grande e λ 1 não muito grande.
22 Pierre L'Ecuyer

Uma variante é o espaçamentos de aniversários teste, definido como segue (Marsaglia, 1985;
Knuth, 1998; L'Ecuyer e Simard, 2001). Deixar EU( 1) ≤ · · · ≤ EU( n) ser os números dos
subcubos que contêm os pontos, classificados em ordem crescente. Definir
a espaçamentos S j = EU( j + 1) - EU( j), para j = 1,. . . , n - 1, e deixe X ser o número de colisões
entre esses espaçamentos. Sob H 0, X é aproximadamente Poisson com média λ 2 = n 3 / ( 4 k), E
se n é grande e λ 2 não muito grande.
Considere agora um MRG, para o qual Ψ t tem uma estrutura de rede regular. Porque
desta regularidade os pontos de Ψ t tenderá a ser mais uniformemente distribuído entre os
subcubos do que pontos aleatórios. Para um bem escolhido k e grande o suficiente
n, esperamos que o teste de colisão detecte isso: é provável que haja também
poucas colisões. Na verdade, o mesmo se aplica a qualquer RNG cujo conjunto Ψ t é distribuído de maneira
muito uniforme. Quando um teste de espaçamento de aniversário com um muito grande k é aplicado a
um MRG, os números dos subcubos que contêm um ponto de Ψ t tendem a ser muito
uniformemente espaçados e o teste detecta isso ao encontrar muitas colisões.
Essas interações específicas entre o teste e a estrutura do RNG levam a padrões
sistemáticos no p- valores dos testes. Para ilustrar isso,
Suponha que pegamos k ligeiramente maior do que a cardinalidade de Ψ t ( tão k ≈ ρ) e
que devido à regularidade excessiva, nenhuma colisão é observada na colisão
teste. A esquerda p- valor então será p eu ≈ P [X ≤ 0 | X ∼ Poisson ( λ 1)] =
exp [ - n 2 / ( 2 k)]. Por esta p- o valor deve ser menor do que um dado ε, nós precisamos de uma amostra
Tamanho n proporcional à raiz quadrada da duração do período ρ. E depois disso,
p eu diminui exponencialmente rápido em n 2
Experimentos extensivos com geradores LCGs, MRGs e LFSR confirmam
que isso é realmente o que acontece com esses RNGs (L'Ecuyer e Hellekalek, 1998;
L'Ecuyer, 2001; L'Ecuyer et al., 2002b). Por exemplo, se tomarmos ε =
10 - 15 e definir n 0 como o tamanho mínimo da amostra n para qual p L < ε, nós encontramos
naquela n 0 ≈ 16 ρ 1/2 ( mais algum ruído) para LCGs que se comportam bem no teste espectral,
bem como para geradores LFSR. Para o teste de espaçamento de aniversários, a regra para
LCGs é n 0 ≈ 16 ρ 1/3 em vez disso (L'Ecuyer e Simard, 2001). Portanto, para estar seguro
com relação a esses testes, a duração do período ρ deve ser tão grande que gerar
mais que ρ 1/3 números é praticamente inviável. Isso certamente desqualifica todos
os LCGs com módulo menor que 2 100 ou então.
Outros tipos de testes para RNGs incluem testes baseados nos pares mais
próximos de pontos entre n pontos gerados no hipercubo, testes baseados em
passeios aleatórios na linha real ou sobre inteiros, testes baseados na complexidade
linear de uma seqüência binária, testes baseados na simulação de dados ou mãos
de pôquer, e muitos outros (Gentle, 2003; Knuth, 1998; L'Ecuyer e Simard, 2002;
Marsaglia, 1996; Rukhin et al., 2001; Vattulainen et al., 1995).
Ao testar RNGs, não há hipótese alternativa específica para H 0
Diferentes testes são necessários para detectar diferentes tipos de partidas de H 0 Suítes de
teste para RNGs incluem uma seleção de testes, com parâmetros predeterminados
e tamanhos de amostra. Os mais conhecidos são provavelmente DIEHARD (Marsaglia,
1996) e o conjunto de testes NIST (Rukhin et al., 2001). A biblioteca TestU01 ( L'Ecuyer e
Simard, 2002) implementa uma grande seleção de testes na linguagem C
Geração de número aleatório 23

e fornece uma variedade de suítes de teste, alguns projetados para iid VOCÊ( 0, 1) sequências
de saída e outros para cadeias de bits.

7 Software Disponível e Recomendações

Quando aplicamos suítes de teste a RNGs atualmente encontrados em softwares


comerciais (software estatístico e de simulação, planilhas, etc.), descobrimos que
muitos deles falham espetacularmente nos testes (L'Ecuyer, 1997, 2001). Não há
razão para usar esses RNGs ruins, porque também existem vários bons que são
rápidos, portáteis e passam em todos esses conjuntos de testes com cores vivas.
Entre eles, recomendamos, por exemplo, os MRGs combinados, LFSRs combinados
e twisters de Mersenne propostos em L'Ecuyer (1999c, a); L'Ecuyer e Panneton
(2002); Matumoto e Nishimura (1998) e Nishimura (2000).
Um pacote de software orientado a objeto conveniente com vários fluxos e
substreams de números aleatórios, é descrito em L'Ecuyer et al. (2002a) e está
disponível em Java, C e C ++, em http://www.iro.umontreal.ca/
~ lecuyer.

8 Geração de Variável Aleatória Não Uniforme

Como para o caso uniforme, a geração de variável não uniforme freqüentemente


envolve aproximações e compromissos. O primeiro requisito é, claro, correção. Isso
não significa que a variável aleatória gerada X deve sempre ter exatamente a
distribuição necessária, porque isso às vezes seria muito caro ou mesmo impossível.
Mas devemos ter um boa aproximação e, de preferência, alguma compreensão da
qualidade dessa aproximação. Robustez também é importante: quando a precisão
depende dos parâmetros da distribuição, ela deve ser boa uniformemente em toda
a gama de valores de parâmetros nos quais estamos interessados.

O método também deve ser eficiente tanto em termos de velocidade quanto de uso de memória.
Freqüentemente, é possível aumentar a velocidade usando mais memória (por exemplo, para tabelas
pré-computadas maiores) ou relaxando os requisitos de precisão. Alguns métodos precisam de uma
configuração única para calcular constantes e construir tabelas. O tempo de configuração pode ser
significativo, mas pode valer a pena gastá-lo se for amortizado por um grande número de chamadas
subsequentes para o gerador. Por exemplo, faz sentido investir em uma configuração mais extensa se
planejamos fazer um milhão de chamadas para um determinado gerador do que se formos
especializados em fazer apenas algumas chamadas, assumindo que esse investimento pode melhorar
a velocidade do gerador suficientemente.
Em geral, devem ser feitos compromissos entre a simplicidade do algoritmo, a
qualidade da aproximação, a robustez em relação aos parâmetros de distribuição e
a eficiência (velocidade de geração, requisitos de memória e tempo de
configuração).
24 Pierre L'Ecuyer

Em muitas situações, a compatibilidade com técnicas de redução de variância é outra


questão importante (Bratley et al., 1987; Law e Kelton, 2000). Podemos estar dispostos a
sacrificar a velocidade do gerador para preservar a inversão, porque o ganho em
eficiência obtido por meio dos métodos de redução da variância pode mais do que
compensar (às vezes em ordens de magnitude) para o gerador ligeiramente mais lento.

8.1 Inversão

O método de inversão, definido na introdução, deve ser o método de escolha para


gerar variáveis aleatórias não uniformes na maioria das situações. O fato de que X
= F - 1 ( VOCÊ) é uma função monótona (não decrescente) de você torna este método
compatível com técnicas de redução de variância importantes, como números
aleatórios comuns, variáveis antitéticas, amostragem de hipercubo latino e
métodos quase-Monte Carlo randomizados (Bratley et al., 1987; Law e Kelton, 2000;
L'Ecuyer e Lemieux , 2000).
Para algumas distribuições, uma expressão analítica pode ser obtida para a
função de distribuição inversa F - 1 e a inversão pode ser facilmente implementada.
Por exemplo, considere o Weibull função de distribuição com parâmetros
α> 0 e β> 0, definido por F (x) = 1 - exp [ - ( x / β) α] para x> 0. É fácil ver que F - 1 ( U) = β [ - ln
(1 - VOCÊ)] 1 / α. Para α = 1, temos o caso especial da distribuição exponencial com
média β.
Para um exemplo de uma distribuição discreta simples, suponha que P [X = i] =
p eu Onde p 0 = 0,6, p 1 = 0,3, p 2 = 0.1, e p i = 0 em outro lugar. O método de inversão, neste
caso, retornará 0 se U < 0,6, 1 se 0,6 ≤ U < 0,9 e 2
E se você ≥ 0.9. Para a distribuição uniforme discreta em {0,. . . , k - 1}, retorno
X = b kU c. Como outro exemplo, vamos X tenha o geométrico distribuição com
parâmetro p, tão P [X = x] = p ( 1 - p) x para x = 0, 1, 2,. . ., onde 0 < p < 1. Então, F (x) = 1
- ( 1 - p) b x + 1 c para x ≥ 0 e um pode mostrar isso X = F - 1 ( U) =
d ln (1 - VOCÊ)/ ln (1 - p) e - 1
Existem outras distribuições (por exemplo, o normal, Student, qui-quadrado)
para as quais não há expressão de forma fechada para F - 1 mas boas aproximações
numéricas estão disponíveis (Bratley et al., 1987; Gentle, 2003; Marsaglia et al.,
1994). Quando a distribuição tem apenas parâmetros de escala e localização,
precisamos aproximar F - 1 apenas para uma versão padronizada da distribuição. Para
a distribuição normal, por exemplo, é suficiente ter um método eficiente para
avaliar a função de distribuição inversa de um N ( 0, 1) variável aleatória Z,
desde um normal com média µ e variância σ 2 pode ser gerado por X = σZ + µ.
Quando os parâmetros de forma estão envolvidos (por exemplo, as distribuições gama e beta),
as coisas são mais complicadas porque F - 1 então depende dos parâmetros de uma maneira
mais fundamental.
H¨örmann e Leydold (2003) propõem um método geral adaptativo e automático
que constrói um método de interpolação de Hermite altamente preciso de
F - 1 Em uma configuração única, seu método produz tabelas para a interpolação
Geração de número aleatório 25

pontos e coeficientes. A geração de variáveis aleatórias usando essas tabelas é bastante


rápida.
Uma maneira menos eficiente, mas mais simples de implementar inversão quando um
método está disponível para computação F é por meio de pesquisa binária (Cheng, 1998). Se a
densidade também estiver disponível e for unimodal com modo conhecido, um método de
iteração de Newton-Raphson pode substituir avantage- amente a busca binária (Cheng, 1998;
Devroye, 1986).
Para implementar a inversão para distribuições discretas gerais, a pesquisa
sequencial e a pesquisa binária com tabelas de consulta são os métodos padrão (Bratley
et al., 1987; Cheng, 1998). Para uma distribuição discreta sobre os valores x1<
· · · <x k, um primeiro tabula os pares ( x eu, F (x eu)), Onde F (x i) = P [X ≤ x eu]
para i = 1,. . . , k. Para gerar X, então basta gerar você ∼ VOCÊ( 0, 1), encontrar
I = min { eu | F (x eu) ≥ VOCÊ}, e retorno X = x EU . Os algoritmos a seguir fazem isso.

Pesquisa sequencial ( precisa OK) iterações no pior caso);


gerar você ∼ VOCÊ( 0, 1); deixar i = 1;
enquanto F (x i) < você Faz i = i + 1;
Retorna x eu.

Pesquisa binária ( precisa O ( registro k) iterações no pior caso);


gerar você ∼ VOCÊ( 0, 1); deixar L = 0 e R = k;
enquanto L <R - 1 faço
m = b ( L + R) / 2 c;
E se F (x m) < você então L = m senão R = m;
/ * Invariante: nesta fase, o índice eu é em { L + 1,. . . , R}. * /
Retorna x R.

Esses algoritmos podem ser modificados de muitas maneiras diferentes. Por


exemplo, se k = ∞, na pesquisa binária, pode-se começar com um valor arbitrário de R,
dobre até F (x R) ≥ VOCÊ, e inicie o algoritmo com este R e L = R / 2. Claro, apenas uma
parte finita da tabela (uma parte que contém a maior parte
a massa de probabilidade) seria pré-calculada neste caso, os outros valores podem ser
calculados apenas quando necessário. Isso também pode ser feito se k é finito, mas grande.
Outra classe de técnicas usa indexação ou baldes para acelerar a pesquisa (Chen
e Asau, 1974; Bratley et al., 1987; Devroye, 1986). Por exemplo, pode-se particionar
o intervalo (0, 1) em c subintervalos de tamanhos iguais e usam valores iniciais
(pré-tabulados) de ( L, R) que dependem do subintervalo em que
você cai. Para o subintervalo [ j / c, (j + 1) / c) os valores de eu e R seria
eu j = F - 1 ( j / c) e R j = F - 1 (( j + 1) / c), para j = 0,. . . , c - 1. O número do subintervalo que
corresponde a um determinado você e simples J = b cU c. Uma vez que sabemos
esse subintervalo, podemos pesquisá-lo por pesquisa linear ou binária. Com um valor
maior de c a pesquisa é mais rápida (em média), mas a configuração é mais cara e é
necessária uma quantidade maior de memória. Portanto, um compromisso deve ser feito
dependendo da situação (por exemplo, o valor de k, o número de variáveis que
esperamos gerar, etc.). Para c = 1, recuperamos o sequencial básico e binário
26 Pierre L'Ecuyer

algoritmos de pesquisa fornecidos acima. Uma pesquisa indexada bem implementada com um
grande o suficiente c geralmente é competitivo com o método de alias (descrito no próximo
parágrafo). Um algoritmo de pesquisa indexado / binário combinado é fornecido abaixo. Uma
adaptação fácil dá a pesquisa indexada / sequencial combinada, que geralmente é preferível
quando k / c é pequeno, porque tem uma sobrecarga menor.

Pesquisa indexada ( combinado com pesquisa binária);


gerar você ∼ VOCÊ( 0, 1); deixar J = b cU c, L = L J, e R = R J;
enquanto L <R - 1 faço
m = b ( L + R) / 2 c;
E se F (x m) < você então L = m senão R = m;
Retorna x R.

Esses métodos de pesquisa também são úteis para funções de distribuição


linear por partes (ou polinomial por partes). Essencialmente, é suficiente adicionar
uma etapa de interpolação no final do algoritmo, após a parte linear (ou polinomial)
apropriada ter sido determinada (Bratley et al., 1987).
Finalmente, o próprio modelo estocástico pode às vezes ser selecionado de uma
forma que torna a inversão mais fácil. Por exemplo, pode-se ajustar uma função de
distribuição inversa paramétrica, altamente fl exível e facilmente computável F - 1 aos
dados, direta ou indiretamente (Nelson e Yamnitsky, 1998; Wagner e Wilson, 1996).
Existem situações onde Rapidez é importante e onde os métodos de não
inversão são apropriados. Nas próximas subseções, descrevemos os principais
métodos de não inversão.

8.2 O Método Alias

A pesquisa sequencial e binária exige OK) e O ( registro k) tempo, respectivamente, no


pior caso, para gerar uma variável aleatória X por inversão sobre o conjunto finito
{ x 1,. . . , x k}. O método de apelido ( Walker, 1974, 1977) pode gerar tal X
dentro O ( 1) tempo por variável, após uma configuração de mesa que leva OK) tempo e espaço.
Por outro lado, não implementa inversão, ou seja, a transformação de você para X não
é monótono.
Para explicar a ideia, considere um diagrama de barras da distribuição, onde cada
índice eu tem uma barra de altura p i = P [X = x eu]. A ideia é “equalizar” as barras para
que todas tenham altura 1 / k, cortando peças da barra e transferindo
eles para outras barras. Isso é feito de forma que no novo diagrama, cada barra
eu contém um pedaço de tamanho q eu ( digamos) da barra original eu e um pedaço de
tamanho 1 / k - q eu de outra barra cujo índice j, denotado A (i), é chamado de apelido
valor de eu. O procedimento de configuração inicializa duas tabelas, UMA e R, Onde A (i) é
o valor do alias de eu e R (i) = (i - 1) / k + q eu. Veja Devroye (1986) e Law e Kelton (2000)
para os detalhes. Para gerar X, nós geramos você ∼ VOCÊ[ 0, 1],
definir I = d kU e, e retorno X = x eu E se U <R (I) e X = x A (I) por outro lado.
Existe uma versão do método alias para distribuições contínuas, chamado
a complemento de aceitação método (Kronmal e Peterson, 1984; Devroye,
Geração de número aleatório 27

1986; Gentil, 2003). A ideia é decompor a densidade f do alvo


distribuição como a combinação convexa de duas densidades f 1 e f 2, f = wf 1 +
(1 - w) f 2 por algum número real C ∈ ( 0, 1), de uma forma que wf 1 ≤ g para alguma outra
densidade g e para que seja fácil gerar a partir g e f 2 O algoritmo funciona da seguinte
maneira: Gerar X da densidade g e você ∼ VOCÊ( 0, 1); E se Ug (X) ≤ wf 1 ( Y)
Retorna X, caso contrário, gere um novo X da densidade f 2 e devolva.

8.3 Estimativa e geração de densidade do kernel

Em vez de selecionar uma distribuição paramétrica que é difícil de inverter e estimar


os parâmetros, pode-se estimar a densidade por meio de um estimativa de
densidade do kernel método para o qual a geração de variáveis aleatórias é muito
fácil (Devroye, 1986; H¨örmann e Leydold, 2000). No caso de um kernel gaussiano,
por exemplo, on pode gerar variáveis simplesmente selecionando uma observação
aleatória dos dados e adicionando ruído aleatório gerado de uma distribuição
normal com média zero. No entanto, este método não é equivalente a inversão. Por
causa do ruído adicionado, selecionar uma observação maior não garante
necessariamente um valor maior para a variável gerada.

8.4 O Método de Rejeição

Agora suponha que queremos gerar X de uma densidade complicada f. Na verdade


f pode ser conhecido apenas até uma constante multiplicativa κ> 0, ou seja, sabemos apenas κf.
Se nós sabemos f, podemos apenas pegar κ = 1. Selecionamos outra densidade r
ef ar (x) para todos x por alguma constante uma, e tal que
de tal modo que κf (x) ≤ t (x) d =
gerando variáveis Y da densidade r é fácil. A função t é chamado de função do
chapéu ou função de majoração. Ao integrar esta desigualdade com respeito a
x em ambos os lados, descobrimos que κ ≤ uma. Os seguintes rejeição método gera
X com densidade f ( von Neumann, 1951; Devroye, 1986; Evans e Swartz,
2000):

Método de rejeição;
repetir
gerar Y da densidade r e você ∼ VOCÊ( 0, 1), independente;
até Ut (Y) ≤ κf (Y);
Retorna X = Y.

O número R de voltas para o loop de "repetição" é um mais uma variável aleatória


geométrica com parâmetro κ / a, tão E [R] = a / κ. Assim, nós queremos a / κ ≥ 1 para ser
o menor possível, ou seja, queremos minimizar a área entre κf e t.
Geralmente, há um meio-termo entre trazer a / κ perto de 1 e mantendo
r simples.
Quando κf é caro para calcular, também podemos usar funções de compressão q 1 e
q 2 que são mais rápidos de avaliar e que q 1 ( x) ≤ κf (x) ≤ q 2 ( x) ≤ t (x) para todos x. Para
verificar a condição Ut (Y) ≤ κf (Y), primeiro verificamos se Ut (Y) ≤ q 1 ( Y),
28 Pierre L'Ecuyer

nesse caso nós aceitamos Y imediatamente, caso contrário, verificamos se Ut (Y) ≥ q 2 ( Y),
Nesse caso, rejeitamos Y imediatamente. O valor de κf (Y) deve ser com-
colocado apenas quando Ut (Y) cai entre os dois apertos. Sequências de compressões embutidas
também podem ser usadas, onde os primários são os menos caros de calcular, os secundários são um
pouco mais caros, mas mais próximos de κf,
etc.
É prática comum transformar a densidade f por uma função crescente suave T ( por
exemplo, T (x) = registro x ou T (x) = - x - 1/2) selecionado de modo que seja mais fácil
construir boas funções hat e squeeze (muitas vezes lineares por partes) para a
densidade transformada T (f ( ·)). Ao voltar à escala original, obtemos as funções hat
e squeeze para f. Isto é o rejeição de densidade transformada
método, que possui várias variantes e extensões (Devroye, 1986; Evans e Swartz,
2000; H¨örmann et al., 2004).
O método de rejeição também funciona para distribuições discretas; é suficiente substituir
densidades por funções de massa de probabilidade.

8.5 Diluição para processos pontuais com taxas que variam no tempo

Desbaste é um primo de aceitação-rejeição, frequentemente usado para gerar eventos a partir


de um processo de Poisson não homogêneo. Suponha que o processo tenha taxa λ (t)
no tempo t, com λ (t) ≤ λ̄para todos t, Onde λ̄ ¯ é uma constante finita. Pode-se gerar

comeu Poisson pseudo-chegadas a uma taxa constante λ̄ ¯ gerando tempos entre chegadas
que são exponenciais iid de média 1 / λ̄ ¯. Então, uma pseudo-chegada no tempo t é
aceito (torna-se uma chegada) com probabilidade λ (t) / λ̄ ¯ (ou seja, se você ≤ λ (t) / ¯ λ̄,
Onde você é um independente VOCÊ[ 0, 1]), e rejeitado com probabilidade 1 - λ (t) / Os λ̄.
processos de Poisson não homogêneos também podem ser gerados por inversão
(Bratley et al., 1987). A ideia é aplicar uma transformação não linear à escala de tempo
para tornar o processo homogêneo com taxa 1 na nova escala de tempo. Os tempos de
chegada são gerados nesta nova escala de tempo (o que é fácil) e, em seguida,
transformados de volta para a escala de tempo original. O método pode ser adaptado a
outros tipos de processos pontuais com taxas variáveis no tempo.

8.6 O Método da Razão de Uniformes

Se f é uma densidade sobre a linha real, κ uma constante positiva arbitrária, e o par ( U, V)
tem a distribuição uniforme ao longo do conjunto
{ √ }
C = ( u, v) ∈ R 2 tal que 0 ≤ você ≤ κf (v / u),

então V / U tem densidade f ( Kinderman e Monahan, 1977; Devroye, 1986; Gentil, 2003).
Esta propriedade interessante pode ser explorada para gerar X com densidade f: gerar ( U,
V) uniformemente acabado C e retorno X = V / U. Isto é o proporção de uniformes método.
A questão principal é como geramos um ponto uniformemente C. Nos casos em que isso
pode ser feito com eficiência, temos imediatamente uma forma eficiente de gerar X.
Geração de número aleatório 29

A abordagem mais frequente para gerar ( U, V) uniformemente acabado C é o


método de rejeição: definir uma região C 2 Isso contém C e em que é fácil gerar um
ponto de maneira uniforme (por exemplo, uma caixa retangular ou poligonal
região). Para gerar X, repetir: gerar ( U, V) uniformemente acabado C 2, até que
pertença a C. Então volte X = V / U. Se houver outra região C 1 contido
dentro C e para o qual é muito rápido verificar se um ponto ( U, V) é em C 1, esta C 1 também pode
ser usado como um aperto para acelerar a verificação de que o ponto pertence
para C. Vários casos especiais e refinamentos são descritos em Devroye (1986);
Gentil (2003); Leydold (2000) e outras referências aí fornecidas.

8.7 Composição e Convolução ∫

Suponha F é uma combinação convexa de várias distribuições, ou seja, F (x) =



j p j F j ( x), ou mais geralmente F (x) = F y ( x) dH (y). Para gerar de F,
um pode gerar J = j com probabilidade p j ( ou Y a partir de H), então gere X
a partir de F J ( ou F Y). Este método, chamado de algoritmo de composição, é útil para
gerar a partir de composto distribuições como o hiperexponencial ou de
processos compostos de Poisson. Também é freqüentemente usado para projetar
algoritmos especializados para gerar a partir de densidades complicadas. A ideia é dividir
a área sob a densidade complicada em pedaços, onde pedaços j tem superfície
p j. Para gerar X, primeiro selecione uma peça (escolha a peça j com probabilidade p j),
em seguida, desenhe um ponto aleatório uniformemente sobre essa peça e projete-o no hor-
eixo horizontal. Se a partição for definida de forma que seja rápida e fácil de gerar a
partir de pedaços grandes, então X será devolvido muito rapidamente na maioria das
vezes. O método de rejeição com aperto costuma ser usado para gerar a partir de
algumas das peças.
Um método duplo de composição é o método de convolução, que pode ser
usado quando X = Y 1 + Y 2 + · · · + Y n, onde o Y eu são independentes com
distribuições especificadas. Com este método, basta gerar o Y eu de e resumir. Isso
requer pelo menos n uniformes. Exemplos de variáveis aleatórias que
podem ser expressos como somas como essa, incluindo as distribuições
hipoexponencial, Erlang e binomial.

8.8 Outras técnicas especiais

Além dos métodos gerais, várias técnicas especializadas e às vezes muito elegantes
foram projetadas para distribuições comumente usadas, como a distribuição de Poisson
com média pequena, a normal (por exemplo, o método Box-Muller), para gerar pontos
uniformemente em um k- esfera dimensional, para gerar permutações aleatórias, e assim
por diante. Detalhes podem ser encontrados, por exemplo, em Bratley et al. (1987);
Cheng (1998); Devroye (1986); Fishman (1996); Gentil (2003).
Recentemente, tem havido um esforço no desenvolvimento automático ou caixa preta
algoritmos para gerar variáveis de uma densidade arbitrária (conhecida) e
software confiável que implementa esses métodos (H¨örmann e Leydold, 2000;
H¨örmann et al., 2004; Leydold e H¨örmann, 2002; Leydold et al. ., 2002).
30 Pierre L'Ecuyer

Reconhecimentos

Este trabalho foi apoiado pelo Conselho de Pesquisa em Ciências Naturais e


Engenharia do Canadá (NSERC) Grant No. ODGP0110050, NATEQ- Qu´ébec Grant
No. 02ER3218, e um Canada Research Chair para o autor. Wolfgang H¨örmann,
Josef Leydold, François Panneton e Richard Simard fizeram comentários úteis e
correções em um rascunho anterior. O autor foi convidado a escrever capítulos
sobre Geração de números aleatórios para vários manuais e enciclopédias
recentemente. Inevitavelmente, há uma grande duplicação entre esses capítulos.

Referências

Aiello, W., Rajagopalan, S. e Venkatesan, R. (1998). Design de prática


geradores de números aleatórios comprovadamente bons. Journal of Algorithms,
29 (2): 358–389.
Blum, L., Blum, M. e Schub, M. (1986). Um simples pseudo- imprevisível
gerador de números aleatórios. SIAM Journal on Computing, 15 (2): 364–383.
Bratley, P., Fox, BL e Schrage, LE (1987). Um guia para simulação.
Springer-Verlag, New York, segunda edição.
Brown, M. e Solomon, H. (1979). Na combinação de número pseudoaleatório
geradores. Anais de Estatística, 1: 691–695.
Chen, HC e Asau, Y. (1974). Na geração de variáveis aleatórias de um
distribuição empírica. Transações AIEE, 6: 163–166.
Cheng, RCH (1998). Geração de variável aleatória. Em Banks, J., editor,
Manual de Simulação, páginas 139–172. Wiley. capítulo 5. Collings, BJ (1987).
Geradores de números aleatórios compostos. Jornal do
American Statistical Association, 82 (398): 525–527. Conway, JH e Sloane, NJA
(1999). Pacotes de esfera, treliças e
Grupos Grundlehren der Mathematischen Wissenschaften 290. Springer-Verlag,
Nova York, 3ª edição.
Couture, R. e L'Ecuyer, P. (1994). Na estrutura de rede de certas
sequências congruenciais relacionadas aos geradores AWC / SWB. Matemática da
Computação, 62 (206): 798–808.
Couture, R. e L'Ecuyer, P. (1996). Órbitas e redes para aleatório linear
geradores de número com módulos compostos. Matemática da Computação,
65 (213): 189–201.
Couture, R. e L'Ecuyer, P. (1997). Propriedades de distribuição de multiplicação
geradores de números aleatórios com transporte. Matemática da Computação,
66 (218): 591–607.
Couture, R. e L'Ecuyer, P. (2000). Cálculos de rede para números aleatórios
bers. Matemática da Computação, 69 (230): 757–765.
Geração de número aleatório 31

Deng, L.-Y. e George, EO (1990). Geração de variáveis uniformes de


várias variáveis distribuídas quase uniformemente. Comunicações em
Estatística, B19 (1): 145-154.
Deng, L.-Y. e Lin, DKJ (2000). Geração de número aleatório para o novo
século. The American Statistician, 54 (2): 145-150.
Deng, L.-Y. e Xu, H. (2003). Um sistema de alta dimensão, eficiente e longa
geradores de números aleatórios uniformes de ciclo e portáteis. Transações ACM em
modelagem e simulação de computador, 13 (4): 299–309. Devroye, L. (1986). Geração de
variável aleatória não uniforme. Springer-
Verlag, Nova York.
Eichenauer-Herrmann, J. (1995). Geração de número pseudo-aleatório por não
métodos lineares. Revisões estatísticas internacionais, 63: 247–255.
Eichenauer-Herrmann, J., Herrmann, E. e Wegenkittl, S. (1997). A sur-
vey de números pseudo-aleatórios congruenciais quadráticos e inversivos. Em
Hellekalek, P., Larcher, G., Niederreiter, H., e Zinterhof, P., editores,
Métodos Monte Carlo e Quasi-Monte Carlo em Computação Científica, volume
127 de Notas de aula em estatística, páginas 66–97, Nova York. Springer. Evans, M.
e Swartz, T. (2000). Aproximando Integrais via Monte Carlo
e Métodos Determinísticos. Oxford University Press, Oxford, Reino Unido.
Fincke, U. e Pohst, M. (1985). Métodos aprimorados para calcular vetores
de curta duração em uma rede, incluindo uma análise de complexidade. Matemática
da Computação, 44: 463–471.
Fishman, GS (1996). Monte Carlo: conceitos, algoritmos e aplicações.
Springer Series in Operations Research. Springer-Verlag, Nova York. Fushimi, M.
(1983). Aumentando as ordens de equidistribuição dos líderes
pedaços da sequência Tausworthe. Cartas de processamento de informações, 16: 189-
192
Gentil, JE (2003). Geração de números aleatórios e métodos de Monte Carlo.
Springer, Nova York, segunda edição.
Goresky, M. e Klapper, A. (2003). Eficiente multiplicação com transporte aleatório
geradores de número com período máximo. Transações ACM em modelagem e
simulação de computador, 13 (4): 310–321. Hellekalek, P. e Larcher, G., editores
(1998). Aleatório e quase aleatório
Conjuntos de pontos, volume 138 de Notas de aula em estatística. Springer, Nova
York. Hellekalek, P. e Wegenkittl, S. (2003). Evidências empíricas sobre AES.
Transações ACM em modelagem e simulação de computador, 13 (4): 322–333.
H¨örmann, W. e Leydold, J. (2000). Geração automática de variável aleatória
para entrada de simulação. Em Joines, JA, Barton, RR, Kang, K. e Fishwick,
PA, editores, Anais da Conferência de Simulação de Inverno de 2000, páginas
675–682, Pistacaway, NJ. IEEE Press.
H¨örmann, W. e Leydold, J. (2003). Geração contínua de variável aleatória
por rápida inversão numérica. Transações ACM em modelagem e simulação de
computador, 13 (4): 347–362.
H¨örmann, W., Leydold, J. e Der fl inger, G. (2004). Não uniforme automático
Geração de variável aleatória. Springer-Verlag, Berlim.
32 Pierre L'Ecuyer

Kinderman, AJ e Monahan, JF (1977). Geração de computador de ran-


variáveis dom usando a razão de desvios uniformes. Transações ACM em
software matemático, 3: 257–260.
Knuth, DE (1998). The Art of Computer Programming, Volume 2: Seminu-
Algoritmos méricos. Addison-Wesley, Reading, Mass., Terceira edição. Kronmal,
RA e Peterson, AV (1984). Um complemento de aceitação ana-
logue do método de mistura mais aceitação-rejeição para gerar variáveis
aleatórias. Transações ACM em software matemático, 10: 271–281. Lagarias, JC
(1993). Números pseudoaleatórios. Ciência Estatística, 8 (1): 31-
39
Law, AM e Kelton, WD (2000). Modelagem e Análise de Simulação.
McGraw-Hill, New York, terceira edição.
L'Ecuyer, P. (1990). Números aleatórios para simulação. Comunicações de
o ACM, 33 (10): 85–97.
L'Ecuyer, P. (1994). Geração de número aleatório uniforme. Annals of Opera-
ções de pesquisa, 53: 77–120.
L'Ecuyer, P. (1996a). Vários gêneros combinados de números aleatórios recursivos -
tor. Pesquisa Operacional, 44 (5): 816–822.
L'Ecuyer, P. (1996b). Tausworthe gen- combinada com equidistribuição máxima
eradores. Matemática da Computação, 65 (213): 203–213.
L'Ecuyer, P. (1997). Estruturas de rede ruins para vetores de valores não sucessivos
produzida por algumas recorrências lineares. INFORMS Journal on Computing,
9 (1): 57–60.
L'Ecuyer, P. (1998). Geração de números aleatórios. Em Banks, J., editor, Mão-
livro de simulação, páginas 93–137. Wiley. Capítulo 4.
L'Ecuyer, P. (1999a). Bons parâmetros e implementações para comp
múltiplos geradores de números aleatórios recursivos combinados. Pesquisa Operacional,
47 (1): 159–164.
L'Ecuyer, P. (1999b). Tabelas de geradores congruenciais lineares de diferentes tamanhos
e boa estrutura de rede. Matemática da Computação, 68 (225): 249–260. L'Ecuyer,
P. (1999c). Tabelas de LFSR combinado maximamente equidistribuído
geradores. Matemática da Computação, 68 (225): 261–269.
L'Ecuyer, P. (2001). Software para geração de número aleatório uniforme: Dis-
distinguir o bom e o mau. Dentro Anais da Conferência de Simulação de Inverno
de 2001, páginas 95–105, Pistacaway, NJ. IEEE Press.
L'Ecuyer, P. (2004). Redes de integração polinomial. Em Niederreiter, H.,
editor, Métodos de Monte Carlo e Quasi-Monte Carlo 2002, páginas 73–98,
Berlim. Springer-Verlag.
L'Ecuyer, P. e Andres, TH (1997). Um gerador de números aleatórios baseado em
a combinação de quatro LCGs. Matemática e Computadores na Simulação,
44: 99–107.
L'Ecuyer, P., Blouin, F. e Couture, R. (1993). Uma busca por bons múltiplos
geradores de números aleatórios recursivos. Transações ACM em modelagem e
simulação de computador, 3 (2): 87–98.
Geração de número aleatório 33

L'Ecuyer, P. e Cˆôt´é, S. (1991). Implementando um pacote de números aleatórios


idade com instalações de divisão. Transações ACM em software matemático,
17 (1): 98–111.
L'Ecuyer, P. e Couture, R. (1997). Uma implementação da rede e
testes espectrais para vários geradores de números aleatórios lineares recursivos. IN-
FORMS Journal on Computing, 9 (2): 206–217.
L'Ecuyer, P. e Granger-Pich´é, J. (2003). Geradores combinados com compo-
membros de diferentes famílias. Matemática e Computadores na Simulação,
62: 395–404.
L'Ecuyer, P. e Hellekalek, P. (1998). Geradores de números aleatórios: Seleção
critérios e testes. Em Hellekalek, P. e Larcher, G., editores, Conjuntos de pontos
aleatórios e quase aleatórios, volume 138 de Notas de aula em estatística, páginas
223–265. Springer, Nova York.
L'Ecuyer, P. e Lemieux, C. (2000). Redução da variância via regras de rede.
Ciência da Administração, 46 (9): 1214–1235.
L'Ecuyer, P. e Lemieux, C. (2002). Avanços recentes em quase-randomizados
Métodos de Monte Carlo. Em Dror, M., L'Ecuyer, P., e Szidarovszki, F., editores, Modelagem
da incerteza: um exame da teoria estocástica, métodos e aplicações, páginas
419–474. Kluwer Academic Publishers, Boston. L'Ecuyer, P. e Panneton, F. (2002).
Construção de geração equidistribuída
eradores baseados em recorrências lineares módulo 2. In Fang, K.-T., Hickernell,
FJ, e Niederreiter, H., editores, Métodos de Monte Carlo e Quasi-Monte Carlo
2000, páginas 318–330. Springer-Verlag, Berlim.
L'Ecuyer, P. e Proulx, R. (1989). Sobre o tempo polinomial “imprevisível”
geradores. Dentro Anais da Conferência de Simulação de Inverno de 1989, páginas
467–476. IEEE Press.
L'Ecuyer, P. e Simard, R. (1999). Cuidado com os gêneros congruentes lineares
toros com multiplicadores da forma a = ± 2 q ± 2 r. Transações ACM em
Software Matemático, 25 (3): 367–374.
L'Ecuyer, P. e Simard, R. (2001). Sobre o desempenho de espaçamentos de aniversários
testes para certas famílias de geradores de números aleatórios. Matemática e
Computadores na Simulação, 55 (1–3): 131–137. L'Ecuyer, P. e Simard, R. (2002). TestU01:
uma biblioteca de software em ANSI
C para teste empírico de geradores de números aleatórios. Guia do usuário do
software.
L'Ecuyer, P., Simard, R., Chen, EJ e Kelton, WD (2002a). Um objeto-
pacote de números aleatórios orientado com muitos fluxos longos e substreams.
Pesquisa Operacional, 50 (6): 1073–1075.
L'Ecuyer, P., Simard, R. e Wegenkittl, S. (2002b). Testes seriais esparsos de
uniformidade para geradores de números aleatórios. SIAM Journal on Scienti fi c
Computing, 24 (2): 652–668.
L'Ecuyer, P. e Tezuka, S. (1991). Propriedades estruturais para duas classes
de geradores de números aleatórios combinados. Matemática da Computação,
57 (196): 735–746.
34 Pierre L'Ecuyer

L'Ecuyer, P. e Touzin, R. (2000). Gerador recursivo múltiplo combinado rápido


Atores com multiplicadores da forma a = ± 2 q ± 2 r. Em Joines, JA, Barton,
RR, Kang, K. e Fishwick, PA, editores, Anais da Conferência de Simulação de
Inverno de 2000, páginas 683–689, Pistacaway, NJ. IEEE Press. L'Ecuyer, P. e Touzin,
R. (2004). No número aleatório Deng-Lin gener-
atores e métodos relacionados. Estatística e Computação, 14: 5-9.
Leeb, H. (1995). Números aleatórios para simulação de computador. Tese de mestrado,
Universidade de Salzburgo.
Lemieux, C. e L'Ecuyer, P. (2003). Regras de rede polinomial randomizada
para integração e simulação multivariada. SIAM Journal on Scienti fi c Computing,
24 (5): 1768–1789.
Leydold, J. (2000). Amostragem automática com o método de proporção de uniforme.
Transações ACM em software matemático, 26 (1): 78–98. Leydold, J. e H¨örmann,
W. (2002). UNURAN — A Library for Uni-
Geradores de números aleatórios não uniformes versais. Disponível em http:
//statistik.wu-wien.ac.at/unuran.
Leydold, J., Janka, E. e H¨örmann, W. (2002). Variantes de transformado
rejeição de densidade e indução de correlação. Em Fang, K.-T., Hickernell, FJ e
Niederreiter, H., editores, Métodos Monte Carlo e Quasi-Monte Carlo
2000, páginas 345-356, Berlin. Springer-Verlag. Luby, M. (1996). Pseudo-aleatoriedade
e aplicações criptográficas. Principe-
ton University Press, Princeton. Lu
¨scher, M. (1994). Um gerador de números aleatórios portátil de alta qualidade para
simulações de teoria de campo de rede. Comunicações de Física da Computação, 79: 100-
110
Marsaglia, G. (1985). Uma visão atual dos geradores de números aleatórios. Dentro Com-
ciência e estatística do computador, décimo sexto Simpósio sobre a interface, páginas
3–10, North-Holland, Amsterdam. Editores da Elsevier Science.
Marsaglia, G. (1996). O CDROM de número aleatório Marsaglia incluindo o
DIEHARD bateria de testes de aleatoriedade. Ver http://stat.fsu.edu/
pub / obstinado.
Marsaglia, G. e Zaman, A. (1991). Uma nova classe de gêneros de números aleatórios
tor. Os Anais de Probabilidade Aplicada, 1: 462–480.
Marsaglia, G., Zaman, A. e Marsaglia, JCW (1994). Avaliação rápida
da função de distribuição normal inversa. Estatísticas e cartas de probabilidade,
19: 259–266.
Matsumoto, M. e Kurita, Y. (1992). Geradores GFSR torcidos. ACM
Transações em modelagem e simulação computacional, 2 (3): 179–194.
Matsumoto, M. e Kurita, Y. (1994). Geradores GFSR torcidos II. ACM
Transações em modelagem e simulação computacional, 4 (3): 254–266.
Matsumoto, M. e Kurita, Y. (1996). Desvios fortes da aleatoriedade
dentro m- sequências baseadas em trinômios. Transações ACM em modelagem e simulação
de computador, 6 (2): 99–106.
Geração de número aleatório 35

Matsumoto, M. e Nishimura, T. (1998). Mersenne twister: A 623-


gerador de números pseudo-aleatórios uniforme dimensionalmente equidistribuído.
Transações ACM em modelagem e simulação de computador, 8 (1): 3–30. Nelson,
BL e Yamnitsky, M. (1998). Ferramentas de modelagem de entrada para
problemas. Dentro Anais da Conferência de Simulação de Inverno de 1998, páginas
105-112, Piscataway, NJ. IEEE Press.
Niederreiter, H. (1992). Geração de número aleatório e quase-Monte Carlo
Métodos, volume 63 de SIAM CBMS-NSF Série de Conferências Regionais em
Matemática Aplicada. SIAM, Filadélfia.
Niederreiter, H. (1995). O método de matriz múltipla recursiva para pseudoran-
geração de número dom. Campos Finitos e suas Aplicações, 1: 3-30. Niederreiter,
H. e Shparlinski, IE (2002). Avanços recentes na teoria
de geradores de números pseudo-aleatórios não lineares. Em Fang, K.-T., Hickernell,
FJ, e Niederreiter, H., editores, Métodos de Monte Carlo e Quasi-Monte Carlo
2000, páginas 86–102, Berlin. Springer-Verlag. Nishimura, T. (2000). Tabelas de
twisters Mersenne de 64 bits. Transações ACM
em modelagem e simulação computacional, 10 (4): 348–357.
Panneton, F. e L'Ecuyer, P. (2004). Baseados em geradores de números aleatórios
em recorrências lineares em F 2 C. Em Niederreiter, H., editor, Métodos de Monte
Carlo e Quasi-Monte Carlo 2002, páginas 367-378, Berlin. Springer-Verlag.
Ler, TRC e Cressie, NAC (1988). Estatísticas de adequação para
Dados multivariados discretos. Springer Series in Statistics. Springer-Verlag, Nova
York.
Rukhin, A., Soto, J., Nechvatal, J., Smid, M., Barker, E., Leigh, S., Leven-
filho, M., Vangel, M., Banks, D., Heckert, A., Dray, J. e Vo, S. (2001). Um conjunto de
testes estatísticos para geradores de números aleatórios e pseudo-aleatórios
para aplicações criptográficas. Publicação especial NIST 800-22, Instituto Nacional
de Padrões e Tecnologia (NIST), Gaithersburg, Maryland,
EUA. Ver http://csrc.nist.gov/rng/.
Tausworthe, RC (1965). Números aleatórios gerados por recorrência linear
módulo dois. Matemática da Computação, 19: 201–209. Tezuka, S. (1995). Números
Aleatórios Uniformes: Teoria e Prática. Kluwer
Academic Publishers, Norwell, Mass.
Tezuka, S. e L'Ecuyer, P. (1991). Taus- combinado eficiente e portátil
worthe geradores de números aleatórios. Transações ACM em modelagem e
simulação de computador, 1 (2): 99-112.
Tezuka, S., L'Ecuyer, P. e Couture, R. (1994). No add-with-carry e
subtrair com emprestar geradores de números aleatórios. Transações ACM de
Modelagem e Simulação de Computador, 3 (4): 315–331.
Tootill, JPR, Robinson, WD e Eagle, DJ (1973). Um assintoticamente
sequência Tausworthe aleatória. Jornal do ACM, 20: 469–481. Vattulainen, I.,
Ala-Nissila, T. e Kankaala, K. (1995). Modelos físicos como
testes de aleatoriedade. Revisão Física E, 52 (3): 3205–3213.
von Neumann, J. (1951). Várias técnicas usadas em conexão com
dígitos. Em Householder, AS et al., Editores, O Método Monte Carlo,
36 Pierre L'Ecuyer

número 12 no National Bureau of Standards Applied Mathematics Series, páginas


36–38.
Wagner, MAF e Wilson, JR (1996). Usando a distribuição univariada de B´ézier
ções para modelar processos de entrada de simulação. Transações IIE, 28: 699–711.
Walker, AJ (1974). Novo método rápido para gerar números aleatórios discretos
bers com distribuições de frequência arbitrárias Cartas Eletrônicas, 10: 127–128.
Walker, AJ (1977). Um método e fi ciente para geração aleatória discreta
variáveis com distribuições gerais. Transações ACM em software matemático, 3:
253–256.
Wang, D. e Compagner, A. (1993). Sobre o uso de polinômios redutíveis como
geradores de números aleatórios. Matemática da Computação, 60: 363–374.
Wegenkittl, S. e Matsumoto, M. (1999). Livrando-se de correlações entre
números pseudoaleatórios: descarte versus moderação. Transações ACM em
modelagem e simulação de computador, 9 (3): 282–294.
Wu, P.-C. (1997). Geradores de números aleatórios multiplicativos e congruenciais
com multiplicador ± 2 k 1 ± 2 k 2 e módulo 2 p - 1 Transações ACM em software
matemático, 23 (2): 255–265.
Índice

( t, m, s) - net, 15 gerador Fibonacci lagged, 9


p- valor, 20 rede, 7, 16, 21
gerador congruencial linear (LCG), 7,
método de aceitação-complemento, 25 13, 21
adicionar com transportar, 13 registro de deslocamento de feedback linear (LFSR),
método alias, 24 15, 16, 18, 21
assintoticamente aleatório, 16 recorrência linear, 7
métodos automáticos, 23, 27 módulo de recorrência linear 2, 14
recorrência linear com transporte, 13
pesquisa binária, 24
teste de espaçamento de aniversário, 20 recorrência linear da matriz, 14
maximamente equidistribuído, 16, 18
polinômio característico, 14, 17, 18 teste Mersenne twister, 15, 18, 22 métodos
de colisão, 20, 21 de Monte Carlo, 1
geradores combinados, 12, 18 gerador recursivo múltiplo (MRG), 7 gerador
método de composição, 27 de matriz recursiva múltipla, 18 gerador
método de convolução, 27 multiplica-com-transporte, 13

discrepância, 4 Distribuição de Poisson, 20


rede dupla, 8, 16 Processo de Poisson, 26
rede polinomial, 16
entropia, 20 polinomial LCG, 17
equidissecção, 15 polinômio primitivo, 7, 14
equidistribuição, 15 gerador de números pseudoaleatórios, 1

registro de mudança de feedback generalizado gerador de número aleatório, 1


(GFSR), 15, 17 fatoração aproximada, 10
bondade do ajuste, 4 geradores combinados, 12, 18, 19, 22
definição, 3
função chapéu, 25 figura de mérito, 9, 15
implementação de ponto flutuante, 10
método de inversão, 2, 22 implementação, 10, 19
saltando à frente, 3, 12, 14
estimativa da densidade do kernel, 24 não uniforme, 22
38 Índice

não linear, 19 teste espectral, 8


duração do período, 3, 14, função de compressão, 25
17 dispositivo físico, 2 subtrair com emprestar, 13
módulo de potência de dois, 11
decomposição de potências de dois, 11 Gerador Tausworthe, 15, 16
puramente periódico, 3 têmpera, 18
critérios de qualidade, 3, 22 desbaste, 26
sementes, 3 rejeição de densidade transformada,
estado, 3 26 GFSR torcido, 15, 17, 18
testes estatísticos, 5, 20
streams e substreams, 4, 22 distribuição uniforme, 1
método de razão de uniformes, 26 medida de uniformidade, 4, 15
método de rejeição, 25, 26 imprevisibilidade, 6

teste serial, 20 redução da variância, 22, 23

Você também pode gostar