Java 逆正态累积分布函数转换

Java 逆正态累积分布函数转换,java,c#,Java,C#,我们使用极端优化()中的极端数值库作为计算内核 // portfolio risk is inverse normal cumulative distribution function double risk = NormalDistribution.InverseDistributionFunction( _riskProbabilityLevel, mean, stdev); 现在的问题是,我们正在从C#转向Java,我对Java的了解并不多,但我的任务是重新编写这个特定的

我们使用极端优化()中的极端数值库作为计算内核

// portfolio risk is inverse normal cumulative distribution function
double risk = NormalDistribution.InverseDistributionFunction(
  _riskProbabilityLevel, 
  mean, 
  stdev);
现在的问题是,我们正在从C#转向Java,我对Java的了解并不多,但我的任务是重新编写这个特定的函数

我有一些价值观需要测试:

RiskProbabilityLevel = 0.02
Mean                 = 0.06618
Standard Dev         = 0.057196166520267355

Risk                 = 0.051286461995869864
但是在查看
math3.distribution.NormalDistribution
库中的各种函数时,我找不到可能等效的函数

任何指导或帮助都将不胜感激。 谢谢。

我想你们可以用图书馆。它被称为
apachecommons.math3
。它很受欢迎。从提供的文档中,我认为您可以使用以下代码:

import org.apache.commons.math3.distribution.NormalDistribution;

public class TestProbabilites {

    public static void main(String[] args) {
        double riskProbabilityLevel = 0.02D;
        double mean = 0.06618D;
        double standardDev = 0.057196166520267355D;
        double expectedRisk = 0.051286461995869864D;

        NormalDistribution distribution = new NormalDistribution(mean, standardDev);
        double outcomeRisk = distribution.inverseCumulativeProbability(riskProbabilityLevel);
    }
}
但是您必须记住使用
Maven
Gradle
或其他依赖项管理器将
apache.commons.math3
库添加到项目中


希望这能有所帮助。

谢谢你的回答,救生员!对不起那些认为这是离题的人,考虑到实际上只有一种方法可以将“x”转换为“y”,我不确定它的范围有多广。不管怎样,那个人救了我的饭碗。