平均值,中位数,模式,范围 - Java [英] Mean, Median, Mode, Range - Java

查看:101
本文介绍了平均值,中位数,模式,范围 - Java的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否有一个数学库,其方法 getMean() getMedian() getMode() getRange()

Is there a math library that has the methods getMean(), getMedian(), getMode(), and getRange()?

推荐答案

我猜你的意思是数学意思,等等。我不确定,但你总能自己创造方法!

I'm guessing you mean the math mean, etc. I'm not sure about that, but you can always create the methods yourself!

public double getMean(double[] numberList) {
    double total;
    for (double d: numberList) {
        total += d;
    }
    return total / (numberList.length);
}



getMedian()



此方法假设传递的数组已经排序(即{1,2,3,...})。

getMedian()

This method is going on the assumption that the passed array is already sorted (i.e. {1,2,3,...}).

public double getMedian(double[] numberList) {
    int factor = numberList.length - 1;
    double[] first = new double[(double) factor / 2];
    double[] last = new double[first.length];
    double[] middleNumbers = new double[1];
    for (int i = 0; i < first.length; i++) {
        first[i] = numbersList[i];
    }
    for (int i = numberList.length; i > last.length; i--) {
        last[i] = numbersList[i];
    }
    for (int i = 0; i <= numberList.length; i++) {
        if (numberList[i] != first[i] || numberList[i] != last[i]) middleNumbers[i] = numberList[i];
    }
    if (numberList.length % 2 == 0) {
        double total = middleNumbers[0] + middleNumbers[1];
        return total / 2;
    } else {
        return middleNumbers[0];
    }
}



getMode()



getMode()

public double getMode(double[] numberList) {
    HashMap<Double,Double> freqs = new HashMap<Double,Double>();
    for (double d: numberList) {
        Double freq = freqs.get(d);
        freqs.put(d, (freq == null ? 1 : freq + 1));   
    }
    double mode = 0;
    double maxFreq = 0;    
    for (Map.Entry<Double,Doubler> entry : freqs.entrySet()) {     
        double freq = entry.getValue();
        if (freq > maxFreq) {
            maxFreq = freq;
            mode = entry.getKey();
        }
    }    
    return mode;
}



getRange()



getRange()

public double getRange(double[] numberList) {
    double initMin = numberList[0];
    double initMax = numberList[0];
    for (int i = 1; i <= numberList.length; i++) {
        if (numberList[i] < initMin) initMin = numberList[i];
        if (numberList[i] > initMax) initMax = numberList[i];
    }
    return initMax - initMin;
}       

这篇关于平均值,中位数,模式,范围 - Java的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆