"the above will produce trully random values of 1 -10."
First of all, they are pseudo random numbers, and your method reduces their "randomness" because it effectively truncates the value returned from rand() to a few low order bits, which are not necessarily random because of the way pseudo random numbers are generated, so it's commonly villified as a poor method.