Voici comment je le comprends:
Quel pourcentage xse situe dans une fourchette
Supposons que vous ayez une plage de 0à 100. Étant donné un nombre arbitraire de cette plage, dans quel "pourcentage" de cette plage se situe-t-il? Cela devrait être assez simple, 0serait 0%, 50serait 50%et 100serait 100%.
Maintenant, si votre gamme était 20à 100? Nous ne pouvons pas appliquer la même logique que ci-dessus (diviser par 100) car:
20 / 100
ne nous donne pas 0( 20devrait être 0%maintenant). Cela devrait être simple à corriger, il suffit de faire le numérateur 0pour le cas de 20. Nous pouvons le faire en soustrayant:
(20 - 20) / 100
Cependant, cela ne fonctionne 100plus car:
(100 - 20) / 100
ne nous donne pas 100%. Encore une fois, nous pouvons résoudre ce problème en soustrayant également le dénominateur:
(100 - 20) / (100 - 20)
Une équation plus généralisée pour découvrir ce que% xse situe dans une fourchette serait:
(x - MIN) / (MAX - MIN)
Ajuster la plage à une autre plage
Maintenant que nous savons quel pourcentage se trouve un nombre dans une plage, nous pouvons l'appliquer pour mapper le nombre à une autre plage. Voyons un exemple.
old range = [200, 1000]
new range = [10, 20]
Si nous avons un nombre dans l'ancienne plage, quel serait le nombre dans la nouvelle plage? Disons que le nombre est 400. Tout d'abord, déterminez quel pourcentage se 400situe dans l'ancienne fourchette. Nous pouvons appliquer notre équation ci-dessus.
(400 - 200) / (1000 - 200) = 0.25
Donc, 400se situe dans 25%l'ancienne gamme. Nous avons juste besoin de déterminer le numéro 25%de la nouvelle gamme. Pensez à ce que 50%de [0, 20]est. Ce serait 10bien? Comment êtes-vous arrivé à cette réponse? Eh bien, nous pouvons simplement faire:
20 * 0.5 = 10
Mais qu'en est-il de [10, 20]? Nous devons tout changer 10maintenant. par exemple:
((20 - 10) * 0.5) + 10
une formule plus généralisée serait:
((MAX - MIN) * PERCENT) + MIN
Pour l'exemple original de ce 25%de [10, 20]est:
((20 - 10) * 0.25) + 10 = 12.5
Ainsi, 400dans la plage [200, 1000]correspondrait à 12.5la plage[10, 20]
TLDR
Pour mapper xde l'ancienne plage vers la nouvelle plage:
OLD PERCENT = (x - OLD MIN) / (OLD MAX - OLD MIN)
NEW X = ((NEW MAX - NEW MIN) * OLD PERCENT) + NEW MIN