[英]Java programming standard deviation error in code
我的标准差是偏离的。 当我输入时: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);
}
}
在计算标准偏差之前,您需要计算所有数字的均值。 现在你的平均值是所有数字的平均值,直到当前数字。 你的问题在这里
square = Math.pow(currentNum - mean, 2.0);
在这一点上,平均值是我们看到的数字的平均值。 这是因为numtotal是我们看到的数字的总和。 要解决此问题,您可以先将所有数字输入到数组列表中。 然后计算所有数字的均值,然后你可以计算出方差和标准偏差。
如果你要除以它, count
需要是一个双倍。
mean = (double) numtotal / count;
- >
mean = (double) numtotal / (double) count;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.