例如我有两个范围
(1) 0 to 3
(2) 10 to 15
在范围(1)中,我的数字介于 0 和 3 之间,其中 0 是最小值,3 是最大值......(它也有值 1 和 2)......
现在我想将范围 (1) 和 (2) 重新调整为 0 到 1 的范围。你能告诉我如何做到这一点,或者至少指向有用的网站吗?多谢!
例如我有两个范围
(1) 0 to 3
(2) 10 to 15
在范围(1)中,我的数字介于 0 和 3 之间,其中 0 是最小值,3 是最大值......(它也有值 1 和 2)......
现在我想将范围 (1) 和 (2) 重新调整为 0 到 1 的范围。你能告诉我如何做到这一点,或者至少指向有用的网站吗?多谢!
您所描述的称为线性插值。
对于一般情况,假设您有一个c
介于a
and之间的值b
,并且您想要一个x
介于 0 和 1 之间的值,该值基于 和之间c
的相对位置。的等式如下:a
b
x
x := (c - a) / (b - a)
因此,如果您有一个介于 10 和 15 之间的值(比如说 11),并且您想要一个介于 0 和 1 之间的值,您可以将这些值打入上面的等式:
x := (11 - 10) / (15 - 10)
x := 1/5
换句话说,11 是从 10 到 15 的五分之一。
更一般的情况(当你有一个c
介于a
and之间的值b
并且你想要一个x
介于y
and之间的值时z
),x
计算如下:
x := (c - a) * (z - y) / (b - a) + y
在你的情况下,z = 1
和y = 0
。