Javascript 根据另一个数字的百分比从范围中选择一个数字

Javascript 根据另一个数字的百分比从范围中选择一个数字,javascript,math,Javascript,Math,我想根据输入的百分比在两个数字之间选择一个数字。假设范围在40-60之间。输入范围在1-10之间。如果输入值为10,则输出值应为60。值=1,输出=40。值=5,输出=50 我首先试图弄清楚算法,如何开始 到目前为止,我使用了各种不同的公式。 通常,要将变量x缩放到[a,b]范围内,可以使用: normalized = ((b−a)x−min(x))(max(x)−min(x))+a 因此,高阶函数在这里可能很有用: const func=(outMin、outMax、inMin、inMax

我想根据输入的百分比在两个数字之间选择一个数字。假设范围在40-60之间。输入范围在1-10之间。如果输入值为10,则输出值应为60。值=1,输出=40。值=5,输出=50

我首先试图弄清楚算法,如何开始

到目前为止,我使用了各种不同的公式。 通常,要将变量x缩放到[a,b]范围内,可以使用:

normalized = ((b−a)x−min(x))(max(x)−min(x))+a

因此,高阶函数在这里可能很有用:

const func=(outMin、outMax、inMin、inMax)=>
v=>outMin+(outMax-outMin)*(v-inMin)/(inMax-inMin);
常量boundFunc=func(40,60,1,10);
常数v1=boundFunc(1)//40
常数v2=boundFunc(5)//48.8888....
常数v3=boundFunc(10)//60

console.log(v1、v2、v3)因此,高阶函数在这里可能很有用:

const func=(outMin、outMax、inMin、inMax)=>
v=>outMin+(outMax-outMin)*(v-inMin)/(inMax-inMin);
常量boundFunc=func(40,60,1,10);
常数v1=boundFunc(1)//40
常数v2=boundFunc(5)//48.8888....
常数v3=boundFunc(10)//60

console.log(v1、v2、v3)如果输入范围为1-10,但范围为40-45,会发生什么情况?当输入为5时,您会返回42.5吗?或者42或43?考虑将两个范围映射到一个单位间隔[0…1]并返回。剩下的应该很简单。(在第二步中,您可以考虑如何仅使用integer Artihmedic执行相同的操作,以避免任何舍入错误)您陷入了什么困境?你有线性变换方程;这不是一个真正的“算法”,只是一个方程式。您还没有发布任何编码尝试,因此没有问题可以修复。你被困在哪里?@GregoryWitek 42。5@Prune在方程式格式中,如果输入范围为1-10,但范围为40-45,会发生什么情况?当输入为5时,您会返回42.5吗?或者42或43?考虑将两个范围映射到一个单位间隔[0…1]并返回。剩下的应该很简单。(在第二步中,您可以考虑如何仅使用integer Artihmedic执行相同的操作,以避免任何舍入错误)您陷入了什么困境?你有线性变换方程;这不是一个真正的“算法”,只是一个方程式。您还没有发布任何编码尝试,因此没有问题可以修复。你被困在哪里?@GregoryWitek 42。5@Prune在方程形成阶段,感谢bro,函数几乎产生了预期的结果。我有了基本的想法。再次感谢Hanks bro,函数几乎生成了预期结果。我有了基本的想法。再次感谢