Recientemente me topé con este problema. Ingenuamente pensé que cualquier transformación del uniforme funcionaría, así que conecté una secuencia 1D Sobol (y Halton) como si la secuencia fuera un generador de números aleatorios en una std::normal_distribution<>
variante. Para mi sorpresa, no funcionó, obviamente generó una distribución no normal.
Ok, entonces tomé la función Numerical Recipes Third Edition Chapter 7.3.9 Normal_dev
para generar números normales de las secuencias de Sobol o Halton por el método de "Ratio-of-Uniforms" y falló de la misma manera. Entonces pensé, bueno, si miras el código, se necesitan dos números aleatorios uniformes para generar dos números aleatorios normalmente distribuidos. Quizás si utilizo una secuencia 2D Sobol (o Halton) funcionará. Bueno, falló nuevamente.
Recordé el "método Box-Muller" (mencionado en los comentarios) y dado que tiene una interpretación más geométrica, pensé que podría funcionar. Bueno, funcionó! Estaba muy emocionado de comenzar a hacer otra prueba, la distribución parece normal.
El problema que vi fue que la distribución no era mejor que aleatoria, se trataba de llenar, así que estaba un poco decepcionado, pero listo para publicar el resultado.
Luego hice una búsqueda más profunda (ahora que sabía qué buscar), y resultó que ya hay un documento sobre este tema: http://www.sciencedirect.com/science/article/pii/S0895717710005935
En este documento se afirma realmente
Dos métodos bien conocidos utilizados con números pseudoaleatorios son los métodos de Box-Muller y de transformación inversa. Algunos investigadores e ingenieros financieros han afirmado que es incorrecto usar el método Box-Muller con secuencias de baja discrepancia, y en su lugar, debe usarse el método de transformación inversa. En este artículo demostramos que el método Box-Muller puede usarse con secuencias de baja discrepancia, y discutimos cuándo su uso podría ser realmente ventajoso.
Entonces la conclusión general es esta:
1) Puede usar Box-Muller en secuencias 2D de baja discrepancia para obtener secuencias distribuidas normalmente. Pero mis pocos experimentos parecen mostrar que la baja discrepancia / espacio, por ejemplo, las propiedades de llenado se pierden en la secuencia transformada normal.
2) Puede usar el método inverso, presumiblemente se conservarán las propiedades de baja discrepancia / relleno de espacio.
3) La proporción de uniformes no se puede usar.
EDITAR : Este https://mathoverflow.net/a/144234 apunta a las mismas conclusiones.
Hice una ilustración (la primera figura (Proporción de uniformes en Sobol) muestra que la distribución obtenida no es normal, pero los ohters (Box-Muller y aleatorio para comparación) son):
EDIT2:
El punto principal es que, incluso si encuentra un método que pueda transformar la "distribución" de una secuencia de baja discrepancia, no es obvio que conserve las buenas propiedades de relleno. Entonces no eres mejor que con una distribución normal verdaderamente aleatoria (estándar). Todavía tengo que encontrar un método que tenga poca discrepancia y, sin embargo, se llene muy bien con una distribución no uniforme. Apuesto a que tal método es muy poco obvio y quizás un problema abierto.