java不支持org。阿帕奇。平民数学3。分配二元分布(1,p)`会带来很多性能开销吗?
伯努利分布相当于二项分布,只有一次试验,即来自Apache Commons数学库的BinomialDistribution(1,p)
。伯努利分布显然比一般的二项分布简单得多
如果性能很重要,我应该通过子类化AbstractIntegerDistribution
来实现我自己的BernoulliDistribution(p)
,还是通过使用BinomialDistribution(1,p)
来获得几乎相同的性能
# 1 楼答案
如果您实际使用的是分发方法,并且性能很重要,那么应该将AbstractIntegerDistribution子类化
二项分布通过特殊函数使用数值近似实现分布方法。这些计算会带来一些开销,在退化(Bernoulli)情况下是不必要的,因为可以返回常量。从3.4.1版开始,在
probability
方法中没有检查退化情况;尽管有一个签入cumulativeProbability