Why would the output be gritty?
(Assuming the random values are equally likely between 0 and 2147483647 (and
I would divide by 2147483647).)
Consider a typical 8 byte floating point implementation. If we
examine float.h we might find a definition similar to this:
#define DBL_MANT_DIG 53
Now the log base 2 of 2147483648 is 31.
That means that there are titanic, spastic jumps between each value
formed by the divisions.
A proper floating point pseudo random number generator will populate
the bits evenly.
IOW,
0 / 2147483648.0 = 0
1 / 2147483648.0 = 0.0000000004656612873077392578125
2 / 2147483648.0 = 0.000000000931322574615478515625
There are a stupendous number of distinct values between each of these
numbers.
In summary, this is a really awful way to make a floating point prng
that returns values between [0 and 1).
There are some types of uses for which this is sufficient, but since
there are excellent generators available for nothing, why reinvent a
lopsided, triangular wheel when Pirellis are given away for free?
If we examine only the mantissa portion, we can easily see that with
52 mantissa bits (for instance) there are 2^53-1 different ways to
populate these bits. With a 31 bit source, there are only 2^32-1
distinct values to stuff into those slots.
Written out, that means that 9007199254740991 values are being
populated with only 4294967295 values. That ratio is:
4.7683715809210275047704353702546e-7
so about 1 out of 2,097,152 values are ever actually represented.
Print one item, skip 2 million. Print one item, skip 2 million.
There is no way to hit the values in between.
That's what I call gritty.