任何大小的数组java的标准偏差

use*_*170 4 java arrays math methods

嘿伙计们,我无法弄清楚如何计算Java中数组的标准占卜.正如你所看到的,我已经计算了均值,我知道最后我将不得不除以样本大小减1(n-1)并将该数字平方.我遇到的问题是如何取每个数字并计算它与平均值的距离,然后将该数字平方.我知道我可以单独从数据集中做每个数字,但必须有一个更简单的方法.任何帮助将不胜感激,这是我的代码.

public class CalculateArray
{

    public static void main(String[] args)
    {
        int [] numbers = new int[]{1,2,3,4,5,6,7,8,9};

        int sum = 0;
        int max = 0;
        int min = numbers[0];
        double sd = 0;

        for(int i=0; i<numbers.length; i++)
        {
            sum = sum + numbers[i];
        }

        double average = sum / numbers.length;

        System.out.println("Average value is : " + average);

        for(int i=0; i<numbers.length; i++)
        {
            if(numbers[i] > max)
            {
                max = numbers[i];
            }
        }

        System.out.println("max number is : " + max);

        for(int i=0; i<numbers.length; i++)
        {
            if(numbers[i] < min)
            {
                min = numbers[i];
            }
        }

        System.out.println("min number is : " + min);

        for (int i=0; i<numbers.length;i++)
        {
           //this is where im having problems
           sd = ???
        }

        double standardDeviation = math.sqrt(sd/(numbers.length-1));

        System.out.println("The standard deviation is : " + standardDeviation);
    }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*oni 7

要计算数字与平均值的距离,请使用-运算符.用于计算您可以使用的方块Math.pow.所以,鉴于你已经计算average过程序的早期版本:

for (int i=0; i<numbers.length;i++)
{
    sd = sd + Math.pow(numbers[i] - average, 2);
}
Run Code Online (Sandbox Code Playgroud)

顺便说一下,你计算平均值的方式是打破的.你应该定义sum为double,而不是int.