回答:
原則として、各サブ分布から抽出するサンプルの数を事前に選択し、各サブ分布を1回だけ訪問して、ポイント数よりも多くを抽出することができます。
あれは
ランダムなセットを見つけるようにと重みを尊重。
これは、ポアソン分布を各部分分布の平均多項分布(コメントを参照)で描画し、その合計を正規化することで実現すると思います。
ここでの作業は
それから
for (i=1; i<=k; ++i)
for (j=1; j<=n[i]; ++j)
theta ~ N(mu[i],sigma[i])
ここでの作業は
ただし、これはをランダムな順序で取得しないことを意味します。ランダムな順序が必要な場合は、ドローをシャッフルする必要があります(これも大きな)。
実行時に最初のステップが優勢であり、ナイーブアルゴリズムと同じ順序であるように見えますが、すべてのが正規分布であると確信できる場合は、ポアソン分布を正規分布で近似し、最初のステップを高速化できます。
注:この質問の元のバージョンは、「正規分布の加重和」について尋ねましたが、これには次の回答が役立つ場合があります。ただし、この回答、@ Geoffの回答、および質問自体について十分に議論した後、この回答が適用されない「正規分布の混合」のサンプリングに関する質問であることが明らかになりました。
正規分布の合計は正規分布であるため、この単一の分布のパラメーターを計算し、そこからサンプルを簡単に抽出できます。その分布をと呼ぶと、
更新:この回答は正しくありません。用語の混乱が原因です(詳細については、以下のコメントチェーンを参照してください)。(バロンを除いて)人々がこの回答を再投稿しないように、私はそれを指針として残しているだけです。それを上下に投票しないでください。
ランダム変数のプロパティを使用して、それを単一の正規分布ランダム変数に減らします。2つの独立した正規分布ランダム変数の合計は、それ自体がランダム変数なので、および、次に
また、場合、
これら2つの結果を組み合わせて使用すると、
したがって、この場合は、単一の分布からサンプルをプルするだけで済みます。