我们使用Extreme Optimization(http://www.extremeoptimization.com)的Extreme Numerics库作为我们的计算内核。
// 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
库中的各种功能时,我无法找到可能相同的功能。
任何方向或帮助将不胜感激。 感谢。
答案 0 :(得分:9)
我认为您可以使用this库。它被称为apache commons.math3
。它非常受欢迎。从http://www.extremeoptimization.com提供的文档中我认为您可以使用以下代码:
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);
}
}
但您必须记住使用apache.commons.math3
或Maven
或其他一些依赖项管理器添加添加到项目中的Gradle
库。
希望这会有所帮助。