离散数据求均值(数学期望)的算法及Java代码

十分不想写笔记……但是在网上找了一圈没找到这个算法的代码实现,便自己手写了一份放到网上供网友使用,有问题的话欢迎提出。

前言:为什么要用离散数据求均值?很多时候使用平均数,把大量数据累加起来再除以数据的个数并不能真实的反应数据的情况,比如一组稳定80左右的数据,因为其中有几个20的数据,导致求到的平均值就会和真实的情况相差一些。而离散数据的均值是求出的数据的平均状况,数据值得平均水平。这个均值也称为数学期望。

公式

离散数据求均值(数学期望)的算法及Java代码_第1张图片

代码

[Java]

//mSourceData为List类型的变量,里面存放着离散的数据
//list为存放数据与该数据出现次数的变量,由于嫌麻烦没有使用Map的形式存放,而是数据,频率,数据,频率……的形式存放
private int GetDataEx() {
        int num, sum, i, j;
        List list = new ArrayList<>();
        for (i = 0; i < mSourceData.size(); i++) {
            num = mSourceData.get(i);
            if (list.size() == 0) {
                list.add(num);
                list.add(1);
            } else {
                for (j = 0; j < list.size(); j+=2) {
                    if (list.get(j) == num) {
                        list.set(j+1, list.get(j+1)+1);
                        break;
                    }
                }
                if (j >= list.size()) {
                    list.add(num);
                    list.add(1);
                }
            }
        }
        i = mSourceData.size();
        float sum2 = 0f;
        for (j = 0; j < list.size(); j+=2) {
            sum2 += list.get(j)*list.get(j+1)/(float)i;
        }
        sum = (int) sum2;
//        mSourceData.clear();
        return sum ;
    }

你可能感兴趣的:(算法)