2015-07-21 71 views
0

我可以在VS2013中使用mathdotnet格式的C#。在VS2013中使用C#中的mathdotnet的beta分布

我需要在

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

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

生成样本序列我不知道如何控制样本大小。例如,我只需要从发行版中获得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来控制样本?

感谢

回答

0

的分布提供了两种方式一气呵成生成多个样本:

  • 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); 

对于所有论文的变化也可以提供自己的随机实例或one of those provided by Math.NET Numerics的。在类实例的情况下,你可以将它传递给构造函数,在静态例程的情况下,有一个超载接受它作为第一个参数。有关更多详细信息,请参阅Probability Distributions

相关问题