不需要什么高级的东西。任何一个拥有优秀C99数学库(比如iPhone)的平台都已经拥有了你所需要的一切——特别是 erfc
函数,它只是稍微变化了一下:
#import <math.h>
double cumulativeNormal(double x) {
return 0.5 * erfc(-x * M_SQRT1_2);
}
请注意,这是针对标准正态分布(即均值=0,方差=1)的。您将需要使用适当的缩放--因此对于某些均值和方差,它将是:
return 0.5 * erfc(((mean - x)/sqrt(variance)) * M_SQRT1_2);
如果您不需要双精度,将double改为float,使用erfcf
函数,并将字面量更改为单精度字面量。
请记住,Objective-C是C语言的一个非常轻量级的扩展。每个C函数都是Objective-C函数,无需包装或其他花招。
你特别希望有一个Objective-C解决方案,对吧?因为如果你还没有意识到,你可以在项目中使用C++库。