首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何简化计算标准差的下列代码

如何简化计算标准差的下列代码
EN

Code Review用户
提问于 2013-07-11 19:11:26
回答 1查看 178关注 0票数 1

在我开始之前,我花了很多时间去寻找答案。似乎最有参考价值的方法就是这里,http://www.developer.com/print.php/3794146。我不太懂如何优化。见下文。

代码语言:javascript
复制
public void CalculateStdDev()
{
    arrayItemCount = 0; // integer
    average = 0; // double
    double itemsSum = 0;
    double[] values = new double[DS.Tables[0].Rows.Count];
    double[] deviations = new double[DS.Tables[0].Rows.Count];
    double[] squareDeviations = new double[DS.Tables[0].Rows.Count];
    double squareDeviationsSum = 0;
    double squareDeviationsAverage = 0;
    stdDeviation = 0; // double

    for (int i = 0; i < DS.Tables[0].Rows.Count; i++)
    {
        if (DS.Tables[0].Rows[i].ItemArray.GetValue(1).ToString() != "")
        {
            values[arrayItemCount] = Convert.ToDouble(DS.Tables[0].Rows[i].ItemArray.GetValue(1));
            itemsSum += Convert.ToDouble(DS.Tables[0].Rows[i].ItemArray.GetValue(1));
            arrayItemCount += 1;
        }
    }
    average = itemsSum / arrayItemCount;
    for (int i = 0; i < arrayItemCount; i++)
    {
        deviations[i] = Math.Abs(values[i] - average);
        squareDeviations[i] = deviations[i] * deviations[i];
        squareDeviationsSum += squareDeviations[i];
    }
    squareDeviationsAverage = squareDeviationsSum / Convert.ToDouble(arrayItemCount - 1);
    stdDeviation = Math.Round(Convert.ToDouble(Math.Sqrt(squareDeviationsAverage)), 3);
}
EN

回答 1

Code Review用户

发布于 2013-07-12 06:31:15

如果方法计算标准解算,它应该返回值,而不是分配全局变量或实例变量。

致以敬意,

票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/28379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档