Перевести числовые значения в узкий диапазон - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! Выпадает длинный ряд дробных значений в диапазоне от 0 до 10. Как я посчитал, среднее значение равно 1,1. То есть числа, близкие к 10 выпадают крайне редко. Мне нужно сравнить каждое число с нормой (1,1) и посчитать коэффициент, насколько число близко к норме? Коэффициент в результате должен быть в диапазоне от 0,3 до 3. То есть: если выдает 0, то коэффициент равен 0,3. если выпадает 1,1 (норма) то коэффициент равен 1. Если выпадает 10, то коэффициент равен 3. Подскажите, как можно быстро посчитать такой коэффициент?

Решение задачи: «Перевести числовые значения в узкий диапазон»

textual
Листинг программы
public static class ExtensionMethods
{
    /// <summary>
    /// Map one range to another
    /// </summary>
    /// <param name="value"></param>
    /// <param name="fromLower">Lower bound of source range</param>
    /// <param name="fromUpper">Upper bound of source range</param>
    /// <param name="toLower">Lower bound of target range</param>
    /// <param name="toUpper">Upper bound of target range</param>
    /// <returns>Value mapped to target range</returns>
    public static double Map(this double value, double fromLower, double fromUpper, double toLower, double toUpper)
    {
      return toLower + (value - fromLower) / (fromUpper - fromLower) * (toUpper - toLower);
    }
}
 
// Использовать так:
double d = 0.5;
doubre mappedD = d.Map(0, 1, 0, 10); // mappedD = 5;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5
Похожие ответы