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

首先我们要知道权重的意思,举个例子数字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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值