日期:2014-05-18  浏览次数:20843 次

请大家对这个问题给个算法意见,合理都有分!
问题很简单,比如有5组数据(int型),现在要把他们求平均.但是呢,如果其中的某组数很明显地和其他的数据相差太多(比如相差一个位数),就把它舍弃后再求平均.
例如:
1000, 2000, 15000, 2000, 2000.
很明显15000是应该舍去的.
我想集思广益,找个最合适的算法.
合理即有分~

------解决方案--------------------
数据统计上一般采用“钟形曲线”做滴,不过钟形曲线都是基于大范围统计结果滴,所以像你这样的估计只能用单纯的方差比较了
------解决方案--------------------
用阀值迭代可以,大概思想就是先定一个阀值,然后求出平均,凡是同平均数的距离大于阀值的都去掉,
然后重新计算平均,直到一个都去不掉为止,距离算法用直接相减或方差都可以,阀值定为倍数或标准差也都可以

也可以用中位数+阀值,取中位数作为基准,而不是用平均数作为基准,直接用阀值算出上限和下限,删掉即可,