我需要在我的C#代码中使用Excel中的NORMSINV
公式。我没有任何与Excel表格的联系,我没有从excel获得任何价值。只需要在C#代码中使用公式。
如何实现这一目标?
答案 0 :(得分:3)
您可以使用GSL(GNU Scientific Library,用C语言编写)。对应于你所追求的那个函数我认为是“gsl_cdf_ugaussian_Pinv”。
你可以在这里获得GSL:
http://ftp.heanet.ie/mirrors/gnu/gsl
Excel中的功能详情:
http://support.microsoft.com/kb/826772
来自GSL的相应细节:
http://www.gnu.org/s/gsl/manual/html_node/The-Gaussian-Distribution.html
(注意:标准正态分布也称为单位高斯分布)
答案 1 :(得分:0)
我相信这应该计算出你所追求的准确近似值。
(注意:我不用C#编程,因此可能存在一些语法错误)
public double pdf_norm(double x)
{
return (1 / Math.Sqrt(Math.PI)) * Math.Exp(-1 * (Math.Pow(x, 2) / 2));
}
public double cdf_norm(double x)
{
double[] bValues = [0.2316419, 0.319381530, −0.356563782, 1.781477937, −1.821255978, 1.330274429];
double t = 1 / (1 + bValues[0]*x);
return 1 - pdf_norm(x)*(bValues[1]*t + bValues[2]*Math.Pow(t,2) + bValues[3]*Math.Pow(t,3) + bValues[4]*Math.Pow(t,4) + bValues[5]*Math.Pow(t,5));
}
然后你想调用函数cdf_norm来返回你想要的数字。
请测试它是否有效并让我知道。 :)