将一个范围映射到另一个范围时删除异常值?

时间:2011-02-05 21:28:42

标签: c# .net

我问this question如何将0到n之间的范围映射到0到9。

我使用此解决方案并且有效:

private int MapValue(int value, int n)
{
    int output = (int)Math.Round((10.0 / (n - 1) * (value - 1)) - 0.5, 0);
    if (output == -1) return 0;
    else return output;
}

现在我遇到了另一个问题。在一个例子中,我的范围是0到1116.但是大多数值或者介于0和50之间,或者可能是0和100.因此,大多数值都映射到相同的颜色。我怎样才能避免这些异常值篡改我的映射?

1 个答案:

答案 0 :(得分:1)

您需要找到异常值,然后将它们映射到范围中的高值或低值。有许多不同的方法可以找到异常值。 One simple way。搜索“如何查找异常值”,您将找到许多解决方案。