已知两个小数数组,一个为数据一个为对应的权重,计算该数据的中位值

这篇博客探讨了如何在Java中计算带有权重的小数数组的中位数。通过首先计算加权平均值,然后找出与平均值之差的绝对值最小的数,加上平均值得到中位值。提供了相应的代码实现。
摘要由CSDN通过智能技术生成

首先我们要知道权重的意思,举个例子数字a,b,c对应的权重为,a1,b1,c1。那么该组数据的平均值就是(a*a1+b*b1+c*c1)/(a1+b1+c1)。
知道了这些我们在来想思路
首先就是计算劝平均值,然后让数组的各个值与平均值相减,最后把他们相减的值的绝对值进行比较,得到最小的然后再加上平均值,得到该组数据的中位值。
下面是代码

public class median {

    /**
     * @param 计算中位数
     */
    public static void main(String[] args) {
        double[] num = new double[]{0.5,1.24,18,1.4,2.1,3.2,2.5,13,2.6,18,2.25,1.2,1.83,1.3,2.1};
        double[] wnum = new double[]{0.8,0.2,1.98,1.4,2.1,3.8,2.1,2.12,0.5,5.6,1.1,1.2,3.5,1.2,1.5};
        double[] menum = new double[num.length];//数据和平均值的差      
        double sum = 0;//算上权重后数据之和
        double wsum = 0;//权重之和
        double avg = 0;//平均值
        for (int i = 0; i < num.length; i++) {
             sum = sum+num[i]*wnum[i];
             wsum = wsum+wnum[i];
        }
        avg = sum/wsum;
        for (int i = 0; i < menum.len
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值