C#标准差计算

小弟刚入门,请问如何C#实现标准差的计算?需要函数和使用(调用)方法,感谢各位大神!

计算标准差,只需要调用Math函数,和Linq的求平均、求和函数就够了,具体实现如下:

public static void Main(string[] args)
{
    double[] array = new[] {60d, 21d, 30d, 10d, 40d};
    double stdDev = CalculateStdDev(array);
    Console.WriteLine(stdDev);

    Console.Read();
}

private static double CalculateStdDev(IEnumerable<double> values)
{
    double ret = 0;
    if (values.Count() > 0)
    {
        //  计算平均数   
        double avg = values.Average();
        //  计算各数值与平均数的差值的平方,然后求和 
        double sum = values.Sum(d => Math.Pow(d - avg, 2));
        //  除以数量,然后开方
        ret = Math.Sqrt(sum / values.Count());
    }
    return ret;
}

追问

谢谢大神!还有个问题就是我现在用的是System.Collections.ArrayList数组,请问下怎么转换成你使用的那个IEnumerable?

追答

用Linq转换:

ArrayList list = new ArrayList();
var array = list.ToArray().Select(Convert.ToDouble);

array就是IEnumerable<double>类型

温馨提示:答案为网友推荐,仅供参考
相似回答