7

例如我有两个范围

                       (1) 0 to 3
                       (2) 10 to 15

在范围(1)中,我的数字介于 0 和 3 之间,其中 0 是最小值,3 是最大值......(它也有值 1 和 2)......

现在我想将范围 (1) 和 (2) 重新调整为 0 到 1 的范围。你能告诉我如何做到这一点,或者至少指向有用的网站吗?多谢!

4

1 回答 1

33

您所描述的称为线性插值

对于一般情况,假设您有一个c介于aand之间的值b,并且您想要一个x介于 0 和 1 之间的值,该值基于 和之间c的相对位置。的等式如下:abx

x := (c - a) / (b - a)

因此,如果您有一个介于 10 和 15 之间的值(比如说 11),并且您想要一个介于 0 和 1 之间的值,您可以将这些值打入上面的等式:

x := (11 - 10) / (15 - 10)
x := 1/5

换句话说,11 是从 10 到 15 的五分之一。


更一般的情况(当你有一个c介于aand之间的值b并且你想要一个x介于yand之间的值时z),x计算如下:

x := (c - a) * (z - y) / (b - a) + y

在你的情况下,z = 1y = 0

于 2009-09-21T18:21:48.050 回答