繁体   English   中英

标准偏差 c++ 公式建议

[英]Standard Deviation c++ Formula advice

我有这个作业,我将在其中显示提示:

编写一个程序,从用户那里读入一组测试分数数据。 (测试分数应以十进制形式输入以表示百分比等级)。 一旦用户完成输入测试分数(输入 -1 将表示输入结束),打印出输入的测试数量、测试的平均值和标准偏差。 使用以下公式(Welford's method)计算标准偏差: (Standard Deviaton Formula)

您可以通过在处理输入值时跟踪计数(测试次数)、总和和平方和来计算此数量。 注意:虽然有其他方法可以计算标准偏差,但请使用此方法。 使用此方法是因为它只需要一次数据传递。 不要使用数组或向量。

现在下面的代码是我到目前为止所拥有的。 在终端中,我得到了错误的平均值和标准数字。 偏差输出(Terminal Output) 我的数学有问题吗? 任何帮助表示赞赏。 编辑:这是我正在使用的数据以及我应该得到的预期结果:

 1.  67.8
 2.  95.6
 3.  89.5
 4.  76.7
 5.  71.3
 6.  83.2
 7.  90.6
 8.  56.1
 9.  98.6
 10. 85.2

结果:

Number of Test Scores: 10
Average : 81.46
Std. Deviation: 13.39

代码

#include <iostream>
#include <cmath>

using namespace std;

int main()
{

    double sum = 0;
    double sumSq = 0;
    double grade = 0;
    int numtests = 0;

    cout << "Enter the test scores. Once finished, enter -1 to end input.\n";
    cin >> grade;

    while (grade != -1)
    {
        cin >> grade;
        sum = sum + grade;
        sumSq = sumSq + pow(grade, 2);
        numtests++;
    }

    double average = (sum / numtests);
    double std = (sumSq - numtests * pow(average, 2) / (numtests - 1));

    cout << "The number of scores: " << numtests << "\n";
    cout << "Average: " << average << "\n";
    cout << "Std. Deviation: " << std << "\n";

    return 0;
}

您已经编写了函数,因此“-1”是计算的一部分,这不是您想要的。 我可以为你修复它,但我认为你可以从这个提示中得到它。 现在我再看一遍,第一个数字不是您计算的一部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM