C#标准差计算
答案:1 悬赏:30
解决时间 2021-01-10 17:36
- 提问者网友:流星是天使的眼泪
- 2021-01-10 12:47
C#标准差计算
最佳答案
- 二级知识专家网友:妄饮晩冬酒
- 2021-01-10 13:48
计算标准差,只需要调用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 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类型
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 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
ArrayList list = new ArrayList();
var array = list.ToArray().Select(Convert.ToDouble);array就是IEnumerable
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息