从数组中获取值

时间:2015-05-27 17:58:56

标签: c# visual-studio-2010

此代码让用户输入5个数字,存储在数组中,并计算出平均值

double average;
double variance;
int i;
int[] arr = new int[5]; // 5 size array

for (i = 0; i < 5; i++)
{
    Console.Write("\n Enter your number:\t");
    arr[i] = Convert.ToInt32(Console.ReadLine());
}

Console.WriteLine("\n");
average = arr.Sum() / 5.0;
Console.WriteLine("\n The average is {0}", average);
Console.ReadLine();

我正在尝试计算方差,即(数字 - 平均值)*(数字 - 平均值)。

但是我不确定如何从阵列中提取每个数字并执行此计算?

任何帮助非常感谢

2 个答案:

答案 0 :(得分:8)

您可以按如下方式获得标准偏差:

double average = arr.Average();
double sumOfSquaresOfDifferences = arr.Select(val => (val - average) * (val - average)).Sum();
double sd = Math.Sqrt(sumOfSquaresOfDifferences / arr.Length); 

答案 1 :(得分:1)

您的问题

制作扩展方法..未经测试但如果WebDriver specification正确

则应该有效
static class MathsExtensions
{
    public static double GetVariance(this double[] values)
    {
        var avg = values.Average();
        return values.Select(value => (value - avg) * (value - avg)).Sum() / values.Count();
    }
}

刚给它一点测试。

        double[] arr = { 8, 7, 9, 10, 6 };
        Console.WriteLine(arr.GetVariance());
        Console.ReadLine();

它返回2 - 根据我的链接 - 是正确的。

这可能有助于提高

如果你下一次有类似的问题,你应该像谷歌“如何计算方差”,然后根据理论创建你的算法。 但如果确实存在解决方案,则alaways会查找