用JAVA如何求一组数据的加权平均数!
或者如何用数据库SQL直接实现!加权平均数,不是算术平均数!
或者如何用数据库SQL直接实现!加权平均数,不是算术平均数!
解决方案 »
- java中的位运算
- 调用ArrayList的哪个构造函数;Business层如果传参数等....
- java 文本框验证问题
- -Xlint:unchecked怎么用
- 正则表达式\b的匹配问题
- 问个问题
- session 的方法怎么了解?api 里没有??、
- (●●●●)在Applet程序中怎样能连到一个网址;比如:点击按纽,页面切换到该网址页面。(再线等待)
- 从JButton继承的组件,怎么在FlowLayout布局中正确显示大小呢?
- 在JAVA中如何判断一个文本文件已经被其他程序打开?
- 求助
- 多线程下Runtime.getRuntime().addShutdownHook(Thread) 的有效性讨论
可是如果一组数据是不定值怎么办啊
这组数据有可能是10个,15个,20个,里面每个数出现的次数又都不一样~
怎么做啊,帮帮忙啊,
假如15个数1,3,6,8,8,9,3,6,2,6,7,8,1,5,求这组数的加权平均数,怎么搞啊?
double [] weights = {...}//这里是15个数的权值
double sum = 0;
for(int i=0; i<numbers.length; i++0){
sum += numbers[i]* weights[i]
}
是什么意思 是给出的权值 还是 weight = 出现次数/总个数若是 weight = 出现次数/总个数
那就也很简单 不用去计算出现次数 直接将 weight 统一为 1/numbers.length
private static double getWeiAvg(int[] num){
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
for(int i = 0,l = num.length;i< l ; i ++){
int temp = num[i];
if(map.get(temp) == null){
map.put(temp,1);
}else {
map.put(temp,map.get(temp) + 1);
}
}
Set<Integer> set = map.keySet();
Iterator<Integer> it = set.iterator();
int data_sum = 0;
int times_sum = 0;
int data = 0;
int time = 0;
while(it.hasNext()){
data = it.next();
time = map.get(data);
data_sum += data * time;
times_sum += time;
}
BigDecimal b1 = new BigDecimal(data_sum);
BigDecimal b2 = new BigDecimal(times_sum);
return b1.divide(b2,2,BigDecimal.ROUND_HALF_UP).doubleValue();
}
public static void main(String[] args){
//(10×2 + 9×1 + 8×3 + 7×4 )÷10 = 8.1
int[] num = {10,10,9,8,8,8,7,7,7,7};
System.out.println(getWeiAvg(num));
}