Math 数字到[0,1]的线性映射区间

Math 数字到[0,1]的线性映射区间,math,language-agnostic,numbers,Math,Language Agnostic,Numbers,我知道这应该很琐碎,但今晚我找不到解决办法。 假设在给定的范围内有一系列的浮点,比如[0.25,1.0]。例如: {0.25, 0.625, 1.0} 为了将[0.25,1.0]间隔映射到[0.0,1.0],正确的变换方法是什么? 示例顺序应为: {0.0, 0.5, 1.0} 第二个问题,如何概括?如何正确地将给定间隔[a,b]映射到[0,1]?fun-lin映射(列表):= fun lin-map(list) := mx = max(list), mn = min(list)

我知道这应该很琐碎,但今晚我找不到解决办法。 假设在给定的范围内有一系列的浮点,比如[0.25,1.0]。例如:

{0.25, 0.625, 1.0}
为了将[0.25,1.0]间隔映射到[0.0,1.0],正确的变换方法是什么? 示例顺序应为:

{0.0, 0.5, 1.0}
第二个问题,如何概括?如何正确地将给定间隔[a,b]映射到[0,1]?

fun-lin映射(列表):=
fun lin-map(list) :=
    mx = max(list), mn = min(list)
    return [ (x - mn)/(mx-mn) | x <- list ]
mx=最大值(列表),mn=最小值(列表)
返回[(x-mn)/(mx-mn)| x为什么0.375映射到0.5?嗯……也许我错了,但是0.25和1.0之间的距离是0.75。0.75/2是0.375。所以它是0.25和1.0之间的中值,比如0.5是0和1之间的中值。@Heisenbug不完全正确!我想你是说0.375+0.25映射到0.5。我假设你想要一个线性映射,除非另有说明……是y吗你真的是语言不可知论者,还是你想要以某种特定的方式格式化代码?@Heisenburg中点是(a+b)/2或(b-a)/2+a。不是(b-a)/2。2/8和8/8之间的中点是5/8。@Nicholas Wilson:也许我今晚太累了。顺便说一句,我想要线性映射。语言不可知论者。如果你喜欢类似c的伪代码,那就好了