[英]Wrong Median Answer
问题:我在计算arrayList的中位数时遇到问题
背景:所以我的ArrayList获取随机生成的值,我必须计算它的中位数; 我相信我的中位数公式很好,但是我得到了ArrayList中3个值的中位数答案错误。
对于三个值,它给出了错误的中位数。 EG:当数组列表的值是:193.5、200.5、239.8时,程序只是获取前两个值的平均值并给出答案,而不是求200.5
public double getMedianB(){
Collections.sort(myDataB);
double middle = myDataB.size()/2;
if (myDataB.size()%2 == 1) {
middle = (myDataB.get(myDataB.size()/2) + myDataB.get(myDataB.size()/2 - 1))/2;
} else {
middle = myDataB.get(myDataB.size() / 2);
}
System.out.println("median:" + middle);
return middle;
}
您应该翻转条件:
以下条件检查项数是否为奇数。 在这种情况下,您只需要一个中间值。
if (myDataB.size()%2 == 1) {
中位数由
在您的代码中,您具有偶数和奇数切换的条件,因此正确的条件如下
if (myDataB.size()%2 == 0) {
middle = (myDataB.get(myDataB.size()/2) + myDataB.get(myDataB.size()/2 + 1))/2;
} else {
middle = myDataB.get(myDataB.size() / 2);
}
为了获得中间值,您只需要获取中间值。 而是在您的示例中,您正在计算前两个值的平均值。
将代码更改为:
Collections.sort(myDataB);
double middle = myDataB.size()/2;
if (myDataB.size()%2 == 1) {
middle = (double)myDataB.get(myDataB.size()/2);
} else {
middle = (double) myDataB.get(myDataB.size() / 2);
}
System.out.println("median:" + middle);
更改其他条件,无论您要在此处执行什么操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.