带参数的C/C++中的累积正态分布函数
Cumulative Normal Distribution Function in C/C++ with parameters
我想在C++中实现matlab normcdf函数的等价物,我已经发现了这个有用的帖子:C/C++中的累积正态分布函数指向这个实现http://www.johndcook.com/cpp_phi.html.但我希望它有可选的μ和西格玛参数,就像在matlab中一样。
可以吗,当我改变这个:
x = fabs(x)/sqrt(2.0);
至:
x = fabs(x - mu)/sqrt(2.0 * sigma * sigma);
或者我应该做点别的?
小心-您想要保存x-mu
的符号,而不仅仅是x
:的符号
int sign = 1;
if (x < mu)
sign = -1;
x = fabs(x-mu)/sqrt(2.0*sigma*sigma);
否则,缩放是正确的。
您可以添加
x = (x-mu)/fabs(sigma);
作为函数的第一行,在不改变符号检查的情况下获得正确的结果。理想情况下,应该为sigma<=0.0
抛出一个异常,而不是在此处使用fabs
。
与此无关的是,您链接到的实现实际上是一个单精度近似,只是将float
替换为double
(因此最大误差为惊人的7e-8;-)
如果您对从VB进行翻译感到满意,West将在http://www.wilmott.com/pdfs/090721_west.pdf.
不幸的是,作为PDF,您无法复制和粘贴所有的幻数,因此在检查是否正确复制时,您必须非常小心!
相关文章:
- 改变或缩放两个正态分布以具有特定的相关系数
- 从 C++ 函数与 Python 函数返回的不一致值用于偏斜正态分布
- 逆生存函数与正态分布的PPF(ICDF)?
- C 中高斯的随机正态分布
- C :实用程序名称空间中的正态分布
- MT19937和正态分布
- 生成C++中的正态分布随机数
- 如何从限于一定间隔的正态分布进行采样,即C 实现
- 带参数的累积正态分布函数的逆
- 在.h文件中声明正态分布生成器
- Box Muller Transform在实现正态分布PRNG时的问题
- 接受拒绝算法 C++ 正态分布
- 在C 中实现正态分布的统一比率
- 如何创建一个在单独的方法中工作的c++随机正态分布
- 如何在C++中随机采样具有给定平均值和标准误差的正态分布
- C++中对数正态分布的累积函数的逆
- C++生成范围内服从正态分布的随机数
- 在 gmp 任意精度上生成正态分布
- 如何计算 CDF C++中正态分布概率
- 带参数的C/C++中的累积正态分布函数