我知道如果标准偏差为零,则正态分布是不确定的,但我需要处理计算机算法中所有值都相等的情况。即使标准偏差为零,以下方法也必须返回有效值。如何修复此方法使其不被零除?
public static double NormalDist(double x, double mean, double standard_dev)
{
double fact = standard_dev * Math.Sqrt(2.0 * Math.PI);
double expo = (x - mean) * (x - mean) / (2.0 * standard_dev * standard_dev);
return Math.Exp(-expo) / fact;
}
我的想法是在方法的开头插入这个:
if (standard_dev == 0.0)
{
return x == mean ? 1.0 : 0.0;
}
这是正确的吗?