在我的家庭作业中,它要求我根据以下说明编写代码:
一组数字的标准偏差是对它们的值的范围的度量。它定义为每个数字与平均值之间平方差的平均值的平方根。要计算数据中存储的数字的标准偏差:
计算数字的平均值。
对于每个数字,从均值中减去它并平方结果。
找到在步骤2中计算出的数字的平均值。
找到步骤3的结果的平方根。这是标准偏差。
编写代码以计算数据中数字的标准偏差,并将结果存储在double sd中。
例如:double [] data = {1.0,2.0,3.0,4.0,5.0};
//期望的标准偏差(输出):1.4142136
//My code:
double mean1=0;
double mean2=0;
double sum1=0;
double sum2=0;
double sd=0;
//calculate sum from arrays of doubles
for(double a:data)
{
sum1+=a;
}
//calculate mean
mean1=sum1/data.length;
//creates new array for step2
double newData[]=new double[data.length];
for(int k= 0; k>newData.length; k++)
{
double s=0;
newData[k]=data[k];
s=Math.pow((mean1-data[k]),2);
newData[k]=s;
}
//calculate sum of the new array
for(double b:newData)
{
sum2+=b;
}
//calculate mean
mean2=sum2/newData.length;
//calculate standard deviation by sqrt
sd+=Math.sqrt(mean2);
编译时,我的标准偏差为0.0 ???!
这是我不明白的地方。
我在纸上写了代码-
1.我的平均值为3.0
2.我用data []减去mean1并平方得到{4,1,0,1,4}
3.我加并除以找到等于2的均值2
我√2并得到1.4142136,就像预期的结果一样。
论文:为什么我的SD值是0.0?
最佳答案
您的for
循环条件不正确;不会进入for循环,而newData
充满零。
for(int k= 0; k>newData.length; k++)
尝试
<
。for(int k = 0; k < newData.length; k++)
关于java - 标准偏差等于零吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33618193/