使用PL/SQL在Excel中等价于NORMDIST函数

使用PL/SQL在Excel中等价于NORMDIST函数,excel,oracle,plsql,statistics,Excel,Oracle,Plsql,Statistics,有没有一种方法可以在PL/SQL中编写一个存储过程来计算给定值x、标准偏差和平均值的累积正态分布 excel中有一个公式可以做到这一点,它是NORM.DIST(X,MEAN,STD-DEV,TRUE) 我需要在oracle或VBA中的PL SQL中执行此操作,但也可以在其他语言中执行此操作 谢谢——此存储过程给出的结果与excel中的NORMDIST函数相同 --需要传递的参数是x、平均值和标准偏差。 --此方法给出的结果与在excel中传递Cumulative=TRUE时的结果相同。 创建或替

有没有一种方法可以在PL/SQL中编写一个存储过程来计算给定值x、标准偏差和平均值的累积正态分布

excel中有一个公式可以做到这一点,它是
NORM.DIST(X,MEAN,STD-DEV,TRUE)

我需要在oracle或VBA中的PL SQL中执行此操作,但也可以在其他语言中执行此操作

谢谢

——此存储过程给出的结果与excel中的NORMDIST函数相同
--需要传递的参数是x、平均值和标准偏差。
--此方法给出的结果与在excel中传递Cumulative=TRUE时的结果相同。
创建或替换函数规范列表(x值编号、平均值编号、STDEV值编号)
返回号码是
x数;
t数;
z数;
ans编号;
开始
如果(stddev_值=0),则
返回1;
如果结束;
x:=(x_值-平均值)/STDEV_值;
z:=abs(x)/SQRT(2);
t:=1.0/(1.0+0.5*z);
ans:=t*exp(-z*z-1.26551223+t*(1.00002368+t*(0.37409196+t*(0.09678418+t*(-0.18628806+t*(0.27886807+t*(-1.13520398+t*(1.48851587+t*(-0.82215223+t*0.17087277())())())))))))2.0;
If(x)
--This stored procedure gives the same result as NORMDIST Function in excel
--The parameters that need to passed are x,mean and standard deviation.
--This method gives the same result as when you pass Cumulative=TRUE in excel.

create or replace FUNCTION NORMSDIST(x_value number,mean_value number,stddev_value number)
RETURN NUMBER IS

        x number;
        t number;
        z number;
        ans number;

BEGIN
  IF (stddev_value = 0) THEN
  RETURN 1;
  END IF;

  x := (x_value-mean_value)/stddev_value;

  z := abs(x)/SQRT(2);

  t := 1.0/(1.0+0.5*z);

  ans := t*exp(-z*z-1.26551223+t*(1.00002368+t*(0.37409196+t*(0.09678418+t*(-0.18628806+t*(0.27886807+t*(-1.13520398+t*(1.48851587+t*(-0.82215223+t*0.17087277)))))))))/2.0;

     If (x <= 0)   
     Then RETURN ans;
     Else return  1-ans;
    End if; 



END NORMSDIST;