Val*_*adu 3 c algorithm objective-c
我有一个范围从30到300的值数组。我想以某种方式得出一个加权平均值,如果我有5个值并且其中一个值比其余值大很多(峰值),则不会对平均值产生太大影响因为它会如果我只是做一个算术平均:例如:(n1+n2+n3+n4+n5)/5。
有谁知道如何制作一个可以做到这一点的简单算法,或者在哪里看?
听起来好像您要丢弃超出指定参数范围的数据。您可以通过计算中位数/众数并在计算平均值时忽略此范围之外的值来实现。当然,您必须相应地调整除数,以解决丢弃值的数量。这个“可容忍的”范围最终应该由您决定,并且可能取决于您的特定应用程序需求。
另外,您可以尝试消除诸如超出总平均值范围的r%之类的方法。像这样(在javascript中):
function RangedAverage(arr, r)
{
x = Average(arr);
//now eliminate items r% out of range
for(var i=0; i<arr.length; i++)
if(arr[i] < (x/r) || arr[i]>(x*(1+r)))
arr.splice(i,1);
x = Average(arr); //compute new average
return x;
}
Run Code Online (Sandbox Code Playgroud)