WorkingPrecision
is really more meant for setting the internal number precision while calculating your result. If you want a random number with one floating point digit you're probably better off with
Round[#, 0.1] & /@ RandomVariate[UniformDistribution[], 1000]
or
1/10 RandomInteger[{0, 10}, 1000] // N
or you can also set the precision or accuracy explicitly
SetPrecision[#, 1] & /@ RandomReal[{0,1}, 1000]
SetAccuracy[#, 2] & /@ RandomReal[{0,1}, 1000]
Edit:
Like Mr.Wizard says, SetPrecision
and SetAccuracy
have a similar problem than your original solution, even though they are changing the precision after the calculation, because they have to decide how many binary digits to grant to the internal representation of the number. That's why this won't give a satisfying decimal representation in all cases. The other methods are safer in that regard.