私は最近この問題に遭遇しました。単純に、ユニフォームからの変換はうまくいくと思ったので、1D Sobol(およびHalton)シーケンスを、乱数ジェネレーターをstd::normal_distribution<>
変量に変換するシーケンスのように接続しました。驚いたことに、それは機能しませんでした。明らかに非正規分布を生成しました。
それでは、数値レシピ第3版の第7.3.9章のNormal_dev
関数を使用して、 "Ratio-of-Uniforms"の方法でSobolまたはHaltonシーケンスから通常の数を生成しましたが、同じように失敗しました。次に、コードを見ると、2つの正規乱数を生成するために2つの均一な乱数が必要です。おそらく、私がSobol(またはHalton)2Dシーケンスを使用した場合、それは機能します。まあ、それは再び失敗しました。
「Box-Muller法」(コメントで述べた)について覚えていて、より幾何学的な解釈があるので、うまくいくと思いました。まあ、それはうまくいきました!私は他のテストを始めることに非常に興奮しました、分布は正常に見えます。
私が見た問題は、分布がランダムであるということではなく、塗りつぶしという点で、少しがっかりしましたが、結果を公開する準備ができていました。
それから私はより深い検索をしました(何を探すべきか知っていたので)、そしてこの件に関する論文がすでにあることがわかりました:http : //www.sciencedirect.com/science/article/pii/S0895717710005935
この論文では実際に主張されている
疑似乱数で使用される2つのよく知られた方法は、ボックスミュラー法と逆変換法です。一部の研究者や金融エンジニアは、不一致率の低いシーケンスでBox-Muller法を使用するのは誤りであり、代わりに逆変換法を使用する必要があると主張しています。このホワイトペーパーでは、Box–Muller法が低差異シーケンスで使用できることを証明し、その使用が実際に有利になる場合について説明します。
だから全体的な結論はこれです:
1)2D低矛盾シーケンスでBox-Mullerを使用して、正規分布シーケンスを取得できます。しかし、私のいくつかの実験では、通常の変換されたシーケンスでは、低い不一致/スペース、たとえば充填特性が失われていることを示しているようです。
2)逆の方法を使用できます。おそらく、低い不一致/スペース充填プロパティが保持されます。
3)レシオオブユニフォームは使用できません。
編集:このhttps://mathoverflow.net/a/144234は同じ結論を指しています。
私はイラストを作成しました(最初の図(Sobolのユニフォームの比率)は、得られた分布が正規ではないことを示していますが、オーター(Box-Mullerおよび比較のためのランダム)は)です:
EDIT2:
重要な点は、低い不一致シーケンスの「分布」を変換できる方法を見つけたとしても、良好な充填特性を維持できるかどうかは明らかではないということです。したがって、本当にランダムな(標準の)正規分布よりも優れているわけではありません。不一致が少ない方法をまだ見つけていませんが、不均一な分布でうまく満たされます。私はそのような方法は非常に自明ではなく、おそらく未解決の問題だと思います。