如何从 MathDotNet 中的分布中抽取一个样本而无需转换为特定分布?
我有一个分布d
,它可以是任何随机变量,作为IDistribution
. 现在,我想从中取样。我想通过尽可能少地对实际分布本身进行强制转换来做到这一点(我不想要一个巨大的案例语句,其中包含大量强制转换到真正特定的分布类型,如Bernoulli
,Normal
等。
我已经尝试了以下代码,对于IDistribution
d
类型为 的 who Bernoulli
,平均值为 around 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。第三个打印语句似乎给了我一个介于 0 或 1 之间的均匀随机变量(注意:它可能不是制服,这只是对打印语句的快速眼球测试,但绝对不是平均 0.99 的伯努利)。
我一般如何从适当的分布中抽样?