Así es como lo entiendo:
¿Qué porcentaje se x
encuentra en un rango?
Supongamos que tiene un rango de 0
a 100
. Dado un número arbitrario de ese rango, ¿en qué "porcentaje" de ese rango se encuentra? Esto debería ser bastante simple, 0
sería 0%
, 50
sería 50%
y 100
sería 100%
.
Ahora, lo que si su rango fue 20
de 100
? No podemos aplicar la misma lógica que la anterior (dividir por 100) porque:
20 / 100
no nos da 0
( 20
debería ser 0%
ahora). Esto debería ser simple de solucionar, solo necesitamos hacer el numerador 0
para el caso de 20
. Podemos hacer eso restando:
(20 - 20) / 100
Sin embargo, esto ya no funciona 100
porque:
(100 - 20) / 100
no nos da 100%
. Nuevamente, podemos solucionar esto restando también del denominador:
(100 - 20) / (100 - 20)
Una ecuación más generalizada para averiguar qué% se x
encuentra en un rango sería:
(x - MIN) / (MAX - MIN)
Rango de escala a otro rango
Ahora que sabemos qué porcentaje de un número se encuentra en un rango, podemos aplicarlo para asignar el número a otro rango. Veamos un ejemplo.
old range = [200, 1000]
new range = [10, 20]
Si tenemos un número en el rango anterior, ¿cuál sería el número en el nuevo rango? Digamos que el número es 400
. Primero, calcule qué porcentaje 400
está dentro del rango anterior. Podemos aplicar nuestra ecuación anterior.
(400 - 200) / (1000 - 200) = 0.25
Por lo tanto, se 400
encuentra en 25%
el rango anterior. Solo tenemos que averiguar qué número es 25%
del nuevo rango. Pensar en lo que 50%
de [0, 20]
es. Estaría 10
bien? ¿Cómo llegaste a esa respuesta? Bueno, solo podemos hacer:
20 * 0.5 = 10
Pero, ¿qué pasa con [10, 20]
? Necesitamos cambiar todo por 10
ahora. p.ej:
((20 - 10) * 0.5) + 10
una fórmula más generalizada sería:
((MAX - MIN) * PERCENT) + MIN
Para el ejemplo original de lo que 25%
de [10, 20]
es:
((20 - 10) * 0.25) + 10 = 12.5
Entonces, 400
en el rango [200, 1000]
se mapearía 12.5
en el rango[10, 20]
TLDR
Para asignar x
del rango antiguo al nuevo rango:
OLD PERCENT = (x - OLD MIN) / (OLD MAX - OLD MIN)
NEW X = ((NEW MAX - NEW MIN) * OLD PERCENT) + NEW MIN