您可以使用此处和此处所讨论的错误函数。org.apache.commons.math.special.Erf
附录:@Brent Worden 的答案中提出的方法大大简化了此类问题的解决方案。作为一个具体示例,下面的代码显示了如何解决您所引用的示例。此外,我发现将此处cumulativeProbability()
的定义与using的实现进行比较很有帮助Erf.erf
。还要注意如何 inverseCumulativeProbability()
泛化所需的迭代方法。
import org.apache.commons.math.MathException;
import org.apache.commons.math.distribution.NormalDistribution;
import org.apache.commons.math.distribution.NormalDistributionImpl;
/**
* @see http://stattrek.com/Tables/Normal.aspx#examples
* @see https://stackoverflow.com/questions/6353678
*/
public class CumulativeProbability {
private static NormalDistribution d;
public static void main(String[] args) throws MathException {
// Problem 1; µ = 1000; σ = 100
d = new NormalDistributionImpl(1000, 100);
System.out.println(d.cumulativeProbability(1200));
// Problem 2; µ = 50; σ = 10
d = new NormalDistributionImpl(50, 10);
System.out.println(d.inverseCumulativeProbability(0.9));
}
}
安慰:
0.9772498680518208
62.81551565546365
讨论:
问题 1. 在具有平均寿命为 1000 小时、标准偏差为 100 小时的正态分布寿命的设备中,约 97.7% 的设备将在 1200 小时内失效。
问题 2. 在具有平均 50 次重复且标准偏差为 10 次重复的正态分布技能的人中,个人可以以 63 次重复超过 90% 的人口。