Conversion de plages de nombres tout en préservant les ratios
Étant donné une plage de valeurs qui doit être transformée en une autre plage, en conservant leurs ratios relatifs, nous présenter un algorithme général et son implémentation Python.
Algorithme :
Pour convertir une valeur d'une ancienne plage (OldMin, OldMax) vers une nouvelle plage (NewMin, NewMax ) tout en conservant le ratio :
``
NewValue = (((OldValue - OldMin) * (NewMax - NewMin)) / (OldMax - OldMin)) NewMin
``
Ou de manière plus lisible :
``
OldRange = (OldMax - OldMin)
NewRange = (NewMax - NewMin)
NewValue = (((OldValue - OldMin) * NewRange) / OldRange) NewMin
``
Si l'ancienne plage a une étendue nulle (OldMin = OldMax), le calcul est modifié en :
``
OldRange = (OldMax - OldMin)
if (OldRange == 0)
NewValue = NewMin
else
{
NewRange = (NewMax - NewMin) NewValue = (((OldValue - OldMin) * NewRange) / OldRange) + NewMin
}
``
Dans ce scénario , NewMin est le choix par défaut pour la nouvelle valeur, mais d'autres options comme NewMax ou leur moyenne peuvent également être contextuellement appropriées.
Implémentation Python :
``
def convert_range(old_value, old_min, old_max, new_min, new_max):
"""Convertit une valeur d'une plage à une autre tout en préservant le rapport."""
old_range = old_max - old_min
if old_range = = 0 :
return new_min
new_range = new_max - new_min
return (((old_value - old_min) * new_range) / old_range) new_min
``
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!