2015-07-21 38 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