如何在C ++中找到标准差?

时间:2015-05-13 02:05:03

标签: c++ statistics standard-deviation

这是我第一次尝试编程。我希望能够输入可变数量的数据并输出平均值和标准差。我希望它尽可能简单,最好使用当前程序中已存在的命令。

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    float num[46];
    float amount_num;

    cout<< "How many numbers do you want? (max 45)\n";
    cin>> amount_num;

    for (int counter =0; counter < amount_num; counter++)
    {
        cout<< "Enter value "<< counter<< ":"<< endl;
        cin>> num[counter];
    }

    int total;
    int average;
    int latot;
    int fun;
    int n;
    int taco;
    int sd;
    int bell;

    for(int t= 0; t< amount_num; t++)

    {
        total = total + num[t];
    }

    average= total/amount_num;

    for(int t= 0; t< amount_num; t++)


    {
        latot =  num[t] - average;
        bell = pow (latot,2);
        fun = fun + bell;
    }

    n=amount_num-1;
    taco=fun/n;
    sd=sqrt(taco);

    cout<< "Average: "<< average<< endl;
    cout<< "SD: "<< sd<< endl;
}

1 个答案:

答案 0 :(得分:0)

您的代码逻辑看起来是正确的。但是,您不应该使用整数变量。相反,使用浮点变量。使用整数变量会导致大量的整数除法,从而导致大量的数字截断错误。

例如,average= total/amount_num total如果amount_num为128而average为10,则num[t] - average为12时应为12.8。在计算值偏差taco=fun/n时会传播截断错误。

<line>:== ((<ISBN10>|<ISBN13>)([a-Z/0-9]*)) {1,4}) 找到类似的整数除法问题。

使用浮点变量可以消除整数除法和这些中间数值误差。