统计函数的双下溢(正态分布的CDF)

时间:2015-07-20 16:01:59

标签: java statistics double normal-distribution underflow

我在Java项目中使用正态分布的CDF,但是当我计算距离平均值很远的非常小的区间的CDF时,我经常会遇到非常小的数字。 (例如cdf(-10000.02,-10000.01)表示正态分布,平均值为1000,标准值为0.1)。这将导致双重下溢,因为最小数字64位双可以处理仅仅是e-308左右。 我用Google搜索但未能找到可以处理此问题的软件包。

    import org.apache.commons.math3.distribution.NormalDistribution;
    public class NormalDistributionTest{
        public static double CDF(double start, double end, double mean, double stdDev){
            //NormalDistribution is from org.apache.commons.math3
            NormalDistribution nd = new NormalDistribution(mean, stdDev);       
            double p = nd.probability(start, end);
            return p;
        }
        static public void main(){
            System.out.println(NormalDistributionTest.CDF(-12.04, -12.03,6.62, 0.41));
        }
    }

有什么想法吗? 谢谢!

彭杜

0 个答案:

没有答案