Java:在[0,1]范围内带来价值

时间:2014-07-05 20:23:27

标签: java algorithm

如果我有一个带有正值和负值的double的LinkedList,例如:

[-1000, 34, 0, -700, 12]

如何引入[0,1]范围?

如果我只有正数,我可以这样做:

(x - Xmin) / (Xmax-Xmin)

但是既有正面价值又有负面价值?

2 个答案:

答案 0 :(得分:2)

转型保持不变:(x - Xmin) / (Xmax-Xmin)

如果你有负数,减去其中最小的数字就是将它的大小加到所有值上。 Xmin将最终为零,任何更大的将最终为正。然后按(Xmax-Xmin)缩放将所有值带入[0,1]范围。手动尝试一些案例就可以了解情况。

答案 1 :(得分:2)

您的代码仍然可以使用。

x-Xmin移动所有数字,使它们都是正数,最小数字等于零。

/(Xmax-Xmin)缩放数字,使最大的数字等于1,最小的数字保持为零,中间的数字按比例缩放。

所以 (x-Xmin)/(Xmax-Xmin)具有您想要的效果。