簡體   English   中英

標准偏差

[英]Standard Deviation

嗨,我創建了一個代碼來計算一組數字的標准偏差,這是我的以下代碼:

public class standardDev {
 public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int n = in.nextInt();
    int[] arr = new int[n];
    double sum = 0.0;
    for(int i = 0; i < n; i++) {
        arr[i] = in.nextInt();
    }
    Arrays.sort(arr);
    double median = n % 2 != 0 ? arr[n/2] : (arr[n/2] + arr[(n/2)-1])/2;
    for(int i = 0; i < n; i++) {
        sum += Math.pow(arr[i] - median,2);
    }
    System.out.printf("%.1f", Math.sqrt(sum/n));
 }
}

但是,當輸入為:

10

64630 11735 14216 99233 14470 4978 73429 38120 51135 67060

我從預期的答案中得到了不同的結果。 我的輸出: 30475.6預期輸出: 30466.9

但是,如果我嘗試下面的輸入,則會得到正確的答案:

5

10 40 30 50 20

我的輸出: 14.1

預期產量: 14.1

重新編寫代碼以實際計算標准差,該標准差基於平均值:

import java.util.*;
import java.lang.*;
import java.io.*;

class standardDev
{
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] arr = new int[n];
        double sum = 0.0;
        double mean = 0;
        for(int i = 0; i < n; i++) {
            arr[i] = in.nextInt();
            mean += arr[i];
        }
        mean /= n;
        for(int i = 0; i < n; i++) {
            sum += Math.pow(arr[i] - mean,2);
        }
        System.out.printf("%.1f", Math.sqrt(sum/n));
   }
}

示例: http//ideone.com/qY1wkw

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM