J'ai récemment trébuché sur ce problème. Naïvement, je pensais que toute transformation de l'uniforme fonctionnerait, alors j'ai branché une séquence 1D Sobol (et Halton) comme si la séquence où un générateur de nombres aléatoires dans une std::normal_distribution<>
variable. À ma grande surprise, cela n'a pas fonctionné, il a évidemment généré une distribution non normale.
Ok, alors j'ai pris la fonction Numérique Recettes Troisième Edition Chapitre 7.3.9 Normal_dev
pour générer des nombres normaux à partir des séquences de Sobol ou Halton par la méthode de "Ratio-d'uniformes" et cela a échoué de la même manière. Ensuite, je pense, ok, si vous regardez le code, il faut deux nombres aléatoires uniformes pour générer deux nombres aléatoires normalement distribués. Peut-être que si j'utilisais une séquence 2D Sobol (ou Halton), cela fonctionnerait. Eh bien, cela a encore échoué.
Je me suis souvenu de la "méthode Box-Muller" (mentionnée dans les commentaires) et comme elle a une interprétation plus géométrique, j'ai pensé que cela pouvait fonctionner. Eh bien, cela a fonctionné! J'étais très excité de commencer à faire d'autres tests, la distribution semble normale.
Le problème que j'ai vu était que la distribution n'était pas meilleure qu'aléatoire, c'est-à-dire en termes de remplissage, donc j'étais un peu déçu, mais prêt à publier le résultat.
Ensuite, j'ai fait une recherche plus approfondie (maintenant que je savais quoi chercher), et il s'est avéré qu'il y avait déjà un article sur ce sujet: http://www.sciencedirect.com/science/article/pii/S0895717710005935
Dans cet article, il est en fait affirmé
Deux méthodes bien connues utilisées avec des nombres pseudo-aléatoires sont le Box-Muller et les méthodes de transformation inverse. Certains chercheurs et ingénieurs financiers ont prétendu qu'il était incorrect d'utiliser la méthode de Box-Muller avec des séquences à faible écart, et que la méthode de transformation inverse devrait plutôt être utilisée. Dans cet article, nous prouvons que la méthode de Box – Muller peut être utilisée avec des séquences à faible écart et discutons du moment où son utilisation pourrait être avantageuse.
La conclusion générale est donc la suivante:
1) Vous pouvez utiliser le Box-Muller sur des séquences 2D à faible discordance pour obtenir des séquences distribuées normalement. Mais mes quelques expériences semblent montrer que la faible différence / espace, par exemple les propriétés de remplissage, est perdue dans la séquence transformée normale.
2) Vous pouvez utiliser la méthode inverse, sans doute les propriétés de faible écart / remplissage d'espace seront préservées.
3) Le rapport d'uniformes ne peut pas être utilisé.
EDIT : Ce https://mathoverflow.net/a/144234 pointe vers les mêmes conclusions.
J'ai fait une illustration (la première figure (Ratio d'uniformes sur Sobol) montre que la distribution obtenue n'est pas normale mais les ohters (Box-Muller et aléatoire pour comparaison) le sont):
EDIT2:
Le point principal est que, même si vous trouvez une méthode qui peut transformer la "distribution" d'une séquence à faible écart, il n'est pas évident que vous conserverez les bonnes propriétés de remplissage. Vous n'êtes donc pas meilleur qu'avec une distribution normale vraiment aléatoire (standard). Je n'ai pas encore trouvé de méthode à faible divergence et pourtant elle se remplit bien avec une distribution non uniforme. Je parie qu'une telle méthode n'est pas évidente et peut-être un problème ouvert.