Short answer : range [0, 1) .
Yes. Random implementation for a Float : [source] :
instance Random Float where randomR = randomRFloating random rng =
It uses a random 32-bit integer x (where zero is the possible value), it masks the first 8 bits and divides this value by 2 24 . As a result, the range 0 (included) to 1 (excluded). The largest value that it can represent is 0.999999940395 .
The reason this works is because Float has a 24-bit mantissa (as well as a 7-bit metric and sign bit). By converting it to this range, we guarantee that each Float value is equally probable: the last 24 bits are first copied to the mantisse Float , then the float is normalized and the exponent changes so that the values โโare in the range [0, 1].
source share