使用PL/SQL在Excel中等价于NORMDIST函数
有没有一种方法可以在PL/SQL中编写一个存储过程来计算给定值x、标准偏差和平均值的累积正态分布 excel中有一个公式可以做到这一点,它是使用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时的结果相同。 创建或替
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;