Recentemente, me deparei com esse problema. Ingenuamente, pensei que qualquer transformação de uniforme funcionaria; portanto, conectei uma sequência 1D Sobol (e Halton) como se a sequência std::normal_distribution<>
contivesse um gerador de números aleatórios em uma variável. Para minha surpresa, não funcionou, obviamente gerou uma distribuição não normal.
Ok, então eu peguei a função Numerical Recipes Third Edition Chapter 7.3.9 Normal_dev
para gerar números normais das seqüências de Sobol ou Halton pelo método de "Proporção de uniformes" e ela falhou da mesma maneira. Então, porém, ok, se você olhar para o código, são necessários dois números aleatórios uniformes para gerar dois números aleatórios normalmente distribuídos. Talvez se eu usei uma sequência 2D de Sobol (ou Halton), ela funcionará. Bem, falhou novamente.
Lembrei-me do "método Box-Muller" (mencionado nos comentários) e, como ele tem uma interpretação mais geométrica, pensei que poderia funcionar. Bem, funcionou! Fiquei muito empolgado por começar a fazer outro teste, a distribuição parece normal.
O problema que eu vi foi que a distribuição não era melhor que aleatória, era termos de preenchimento, então fiquei um pouco decepcionado, mas pronto para publicar o resultado.
Depois, fiz uma pesquisa mais profunda (agora que sabia o que procurar) e constatamos que já existe um artigo sobre esse assunto: http://www.sciencedirect.com/science/article/pii/S0895717710005935
Neste artigo, é realmente reivindicado
Dois métodos bem conhecidos usados com números pseudo-aleatórios são os métodos Box-Muller e transformação inversa. Alguns pesquisadores e engenheiros financeiros afirmaram que é incorreto usar o método Box-Muller com seqüências de baixa discrepância e, em vez disso, o método de transformação inversa deve ser usado. Neste artigo, provamos que o método Box-Muller pode ser usado com seqüências de baixa discrepância e discutimos quando seu uso pode ser realmente vantajoso.
Portanto, a conclusão geral é esta:
1) Você pode usar o Box-Muller em sequências de baixa discrepância 2D para obter sequências normalmente distribuídas. Mas minhas poucas experiências parecem mostrar que a baixa discrepância / espaço, por exemplo, as propriedades de preenchimento, são perdidas na sequência de transformação normal.
2) Você pode usar o método inverso, presumivelmente as propriedades de baixa discrepância / preenchimento de espaço serão preservadas.
3) A relação de uniformes não pode ser usada.
EDIT : https://mathoverflow.net/a/144234 aponta para as mesmas conclusões.
Fiz uma ilustração (a primeira figura (Proporção de uniformes em Sobol) mostra que a distribuição obtida não é normal, mas os ohters (Box-Muller e aleatório para comparação) são:
EDIT2:
O ponto principal é que, mesmo que você encontre um método que possa transformar a "distribuição" de uma sequência de baixa discrepância, não é óbvio que você preservará as boas propriedades de preenchimento. Portanto, você não é melhor do que com uma distribuição normal verdadeiramente aleatória (padrão). Ainda não encontrei um método que seja de baixa discrepância e, no entanto, preencha bem uma distribuição não uniforme. Aposto que esse método é muito óbvio e talvez um problema em aberto.