4

幾何分布を使用した乱数ジェネレーターが必要です

http://en.wikipedia.org/wiki/Geometric_Distribution

私が試したMathNet.Numerics.Distributions

public void GeometricTest()
{
    var geometric = new Geometric(0.1);
    int back = geometric.Sample();
    Assert.Greater(back, -1);
}

しかし、テストは負の数だけを与えます。誰かが私の間違いを見つけたり、幾何分布をサンプリングする他の方法についてアドバイスをくれたりしますか?

4

1 に答える 1

5

一様 (0,1) の結果を返すp関数が与えられた場合に、各試行で成功の確率を持つジオメトリを生成するには、擬似コードは次のとおりです。rand

define geometric(p)
  return ceiling(ln(1-rand) / ln(1-p))

これにより、最初の成功までの試行回数が得られます。ジオメトリの別の定義 (最初の成功までに何回失敗したか) が必要な場合は、1 を引くか、floor代わりに を使用しceilingます。

于 2014-05-08T22:10:31.847 に答える