Не нужно ничего особенного.Любая платформа с хорошей математической библиотекой 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 на число с плавающей запятой, используйте функцию erfcf
и измените литералы на литералы одинарной точности.
Помните, Objective-C является чрезвычайно легким расширением для C. Каждая функция C является Objective-Функция С, без упаковки или других махинаций.