【发布时间】:2015-07-27 14:55:30
【问题描述】:
如何从 MathDotNet 中的分布中抽取一个样本不必转换为特定分布?
我有一个分布d,它可以是任何随机变量,作为IDistribution 传递。现在,我想从中取样。我想通过尽可能少地对实际发行版本身进行强制转换来做到这一点(我不想要一个巨大的案例声明,其中包含大量强制转换到真正特定的分布类型,如Bernoulli、Normal 等。
我已经尝试了以下代码,IDistributiond 类型为Bernoulli,平均值约为0.99:
Console.WriteLine("Mean is " + ((Bernoulli)d).Mean);
Console.WriteLine("Casted sample is " + ((Bernoulli)d).Sample());
Console.WriteLine("Sample is " + d.RandomSource.NextDouble());
第一个打印语句按预期打印 0.99。 正如预期的那样,第二个打印语句倾向于返回 1,因为 99% 的时间它应该返回 1。 第三个打印语句似乎给了我看起来像 uniform 介于 0 或 1 之间的随机变量(注意:它可能不是统一的,这只是对打印语句的快速眼球测试,但它绝对是不是伯努利,平均值为 0.99)。
我一般如何从适当的分布中抽样?
【问题讨论】: