[英]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.