0

VS2013 で mathdotnet フォーム C# を使用しています。

から一連のサンプルを生成する必要があります

IEnumerable<double> Samples(double a, double b)

http://numerics.mathdotnet.com/api/MathNet.Numerics.Distributions/Beta.htm#Samples

サンプルサイズを制御する方法がわかりません。たとえば、ディストリビューションから 5000 個のサンプル ポイントを取得するだけで済みます。

これは私のC#コードです:

  Beta betadistr = new Beta(alpha, beta);
  list<double> sample = betadistr.samples(alpha, beta); 

サンプルの大きさは?

そして、違いは何ですか

 IEnumerable<double> Samples(double a, double b)

  IEnumerable<double> Samples(Random rnd, double a, double b)

rnd を使用してサンプルを制御する方法は?

4

1 に答える 1

0

ディストリビューションは、一度に複数のサンプルを生成する 2 つの方法を提供します。

  • Sample()無限シーケンスを返します。遅延評価を許可します。必要に応じて、必要なだけ取得してください。
  • Sample(array)配列を完全に埋めます。配列全体が必要な場合は、一般的に最速です。

したがって、厳密にIList<double>5000 個のサンプルが必要な場合は、次のいずれかを実行できます。

Beta beta = new Beta(alpha, beta);
List<double> samples = beta.Samples().Take(5000).ToList();

また

Beta beta = new Beta(alpha, beta);
double[] samples = new double[5000];
beta.Samples(samples);

他にインスタンスが実際に必要ない場合はBeta、同じように機能する静的ルーチンを使用してこれを簡素化できます。

List<double> samples = Beta.Samples(alpha, beta).Take(5000).ToList();

また

double[] samples = new double[5000];
Beta.Samples(samples, alpha, beta);

これらのすべてのバリエーションに対して、独自の Random インスタンス、またはMath.NET Numerics によって提供されるインスタンスの 1 つを提供することもできます。クラス インスタンスの場合、それをコンストラクターに渡すことができます。静的ルーチンの場合、それを最初の引数として受け入れるオーバーロードがあります。詳細については、確率分布を参照してください。

于 2015-07-21T15:48:40.877 に答える