1

Java の正規分布に従って、グリッド (MXN の行列) のセルをサンプリングする必要があります。

Apache Math ライブラリには、値を 1 次元 (1D) でサンプリングする関数があることを知っているので、ベクトルでは問題ありませんが、2D の代替が見つかりません。

1D アプローチを 2 回使用することを考えました。1 つは行用、もう 1 つは列用です。ただし、(1)幾何学的距離ではなくフォン ノイマン距離を使用するため、正確には適切ではありません。 (2) このアプローチでは繰り返しが回避されません (つまり、サンプリングではありません)。

では、特定のセル (r,c) を中心とした正規 (ガウス) 分布に従ってグリッド (マトリックス) のセルをサンプリングするにはどうすればよいでしょうか。


または、サンプリングが不可能な場合 (または複雑すぎる場合)、特定のセル (r、c) を中心としたグリッド内のセル全体に正規分布を使用して確率を分散するにはどうすればよいですか? たとえば、3x3::

0.1 | 0.1 | 0.1
0.1 | 0.2 | 0.1
0.1 | 0.1 | 0.1

前の値が実際にガウス分布に適合するかどうかはわかりませんが、さらに重要なことは、どのマトリックスでも、セルの合計が 1 でなければならないということです。

ここからは、ただ反復してロールするだけです。またはロールして繰り返し追加します。

4

1 に答える 1

1

1D の場合でも、ガウス分布からサンプリングされた値をベクトル インデックスにマッピングする方法が不明です。ただし、2D Gaussian から値をサンプリングするだけでよい場合、Apache commons にはMultivariateNormalDistributionがあります。

共分散行列の対角要素は、2 つの方向に沿ったガウス分布の分散です。対角外のエントリは、2 つの次元間の共分散です。2 つの方向が独立しており、両方の分散が 1 の場合、共分散行列は次のようになります。

double[][] covariance =
                 {{1d, 0d},
                  {0d, 1d}};
于 2016-02-24T21:58:25.350 に答える