Your question perplexes me.
In general, the scaling parameters for normalization can depend on every input value in the vector. In the case of the range method, they depend on the minimum and maximum values of the vector. For example, when you normalize your vector B, the result is effectively
normalized_B = (B - min(B)) ./ (max(B)-min(B));
In other words, you subtract the smallest value of B, to get the minimum of the new interval to be 0, and then divide by the range, to get the maximum of the new interval to be 1.
I'm not even sure what to expect for a range normalization of a single value. I think I would have expected NaN.
So, my question is why would you expect the output to be the same? I think this function simply doesn't do the operation you expect it to.