Obj-C:计算NSNumber对象的NSArray的标准差? [英] Obj-C: Calculate the standard deviation of an NSArray of NSNumber objects?

查看:166
本文介绍了Obj-C:计算NSNumber对象的NSArray的标准差?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我有一个 NSArray NSNumber 对象,如何计算数字的标准差数组?

If I have an NSArray of NSNumber objects, how do I calculate the standard deviation of the numbers in the array?

推荐答案

假设可以安全地将所有NSNumbers处理为双倍长度的浮点数在这个范围的极端,有一些64位整数),我正确地记住了公式的第一个实现可以是:

Assuming it's safe to process all NSNumbers as double length floats (so you'll lose some precision if you've got some 64 bit integers at extreme ends of the range in there) and I've remembered the formula correctly a first implementation could be:

- (NSNumber *)meanOf:(NSArray *)array
{
    double runningTotal = 0.0;

    for(NSNumber *number in array)
    {
        runningTotal += [number doubleValue];
    }

    return [NSNumber numberWithDouble:(runningTotal / [array count])];
}

- (NSNumber *)standardDeviationOf:(NSArray *)array
{
    if(![array count]) return nil;

    double mean = [[self meanOf:array] doubleValue];
    double sumOfSquaredDifferences = 0.0;

    for(NSNumber *number in array)
    {
         double valueOfNumber = [number doubleValue];
         double difference = valueOfNumber - mean;
         sumOfSquaredDifferences += difference * difference;
    }

    return [NSNumber numberWithDouble:sqrt(sumOfSquaredDifferences / [array count])];
}

这篇关于Obj-C:计算NSNumber对象的NSArray的标准差?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆