Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
Pierre L'Ecuyer 1
1. Introdução
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.
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.
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
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.
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).
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
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.
∑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
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
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)
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.
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.
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).
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
Onde uma j, k 6 = 0, para j = 1,. . . , J. Deixar δ 1,. . . , δ J ser números inteiros arbitrários,
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.
Para saltar em frente diretamente de x eu para x i + ν, para um número inteiro arbitrário ν, basta
explorar o relacionamento
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.
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
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
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
x i, j = ( α 1 x eu - 1, j + · · · + α k x eu - k, j) mod 2, (15)
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
∆ J = max
eu ∈J δ EU ,
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
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
• •
eu p S•
• eu p
• •
eu p •
A=• • •
• ... •
• •
eu p
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
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
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].
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.
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
8.1 Inversão
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.
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.
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
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.
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
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
Referências