0

我的标准差很远。当我进入时:2 4 4 4 5 5 7 9 n

我没有得到 2。这是我的代码。我相信一切都检查过了,所以我不明白为什么我一直得到 1.8284791953425266 而不是 2 :

import java.util.Scanner;

public class stocks {

  public static void main(String[] args) {

     Scanner in = new Scanner(System.in);
     double currentNum = 0;
     double numtotal = 0;
     int count = 0;
     double mean = 0;
     double square = 0, squaretotal = 0, sd = 0;

     System.out.println("Enter a series of double value numbers, ");
     System.out.println("Enter anything other than a number to quit: ");

     while (in.hasNextDouble()) 
     {

         currentNum = in.nextDouble();
         numtotal = numtotal + currentNum;

         count++;
         mean = (double) numtotal / count;
         square = Math.pow(currentNum - mean, 2.0);
         squaretotal = squaretotal + square; 
         sd = Math.pow(squaretotal/count, 1/2.0);
     }

     System.out.println("The mean is: " +mean);
     System.out.println("The standard deviation is: " +sd);

     }


 }
4

2 回答 2

2

在计算标准偏差之前,您需要计算所有数字的平均值。现在,您的平均值是当前数字之前所有数字的平均值。你的问题在这里

square = Math.pow(currentNum - mean, 2.0);

在这一点上,平均值是我们看到的数字的平均值。这是因为 numtotal 是我们看到的数字的总和。要解决此问题,您可以首先将所有数字放入数组列表之类的东西中。然后计算出所有数字的平均值,然后你可以计算出平方差和标准差。

于 2013-03-05T05:07:18.160 回答
0

count如果要除以它,则需要为双倍。

mean = (double) numtotal / count;

-->

mean = (double) numtotal / (double) count;
于 2013-03-05T14:14:57.230 回答