# Normalisation of a range of numbers to another range

I want to normalise a set of range of values having 0 Min and a Max that is known but can vary; say 22000 and would like to normalise these values from 0 to 300 and also from 0 to 20. I found a formula here on stack Exchange that is a general formula. The general one-line formula to linearly rescale data values having observed min and max into a new arbitrary range min' to max' is:

newvalue= (max'-min')/(max-min)*(value-max)+max'

I have used it for my purpose, but would like to know how this formula is derived from the following:

newvalue = a * value + b. a = (max'-min')/(max-min) and b = max' - a * max

How can I reference it or back it? And is it the right way to normalise anyway? Any help would be appreciated.

• Since "two points determine a line", it suffices to check both of your formulas agree at two distinct points, i.e. value = min and value = max give newvalue = min' and newvalue = max' respectively. Commented Dec 1, 2015 at 3:44

For how the formula is derived, think about it this way. You have a value, $V$, which lies between a minimum $A$ and a maximum $B$. You want to rescale so it to a new value $v$ so it is between $a$ and $b$ instead. Without knowing anything else about the application, it is simplest to assume that what matters in this rescaling is "how far between $A$ and $B$ is $V$," or, "what is the distance between $A$ and $V$ compared to the maximum distance between $A$ and $B$."
So to preserve this in the rescaling you make the ratio $(V-A)/(B-A)$ the same as the ratio $(v-a)/(b-a)$: $${V-A\over B-A}={v-a\over b-a}$$ And you can easily solve for $v$: $$v=a+(b-a){V-A\over B-A}$$
Whether this is the "right" way to rescale it depends entirely on the application. For instance, maybe your values $V$ have some non-uniform probability distribution between $A$ and $B$, but you want the rescaled values to have a uniform distribution between $a$ and $b$ while preserving the ordering of the values. In this case the linear rescaling would not be the one you wanted.