gpt4 book ai didi

java - 标准差为零?

转载 作者:行者123 更新时间:2023-12-01 16:55:24 29 4
gpt4 key购买 nike

在我的家庭作业 Activity 中,它要求我根据以下说明编写代码:

一组数字的标准差是对其值的分布的度量。它被定义为每个数字与平均值之间的平方差的平均值的平方根。要计算数据中存储的数字的标准差:

  1. 计算数字的平均值。

  2. 对于每个数字,用平均值减去它并计算结果的平方。

  3. 求第 2 步中计算出的数字的平均值。

  4. 求第 3 步结果的平方根。这就是标准差。

编写代码计算data中数字的标准差并将结果存储在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.我的平均值1为3.02.我用data[]和平方减去mean1得到{4,1,0,1,4}3.我相加并除以找到等于2的mean2

我√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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com