我在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));
}
}
有什么想法吗? 谢谢!
彭杜