3 ms·
You are correct, however picking floats uniformly like that is much more difficult, as some values should be thousands of orders of magnitude more likely to be
by fluoridation 3y ago
You are correct, however picking floats uniformly like that is much more difficult, as some values should be thousands of orders of magnitude more likely to be picked than others. It's much easier to implement a generator that randomizes the mantissa and calls it a return.
- fanf2 3y agoMy favourite implementation is double random_double(rng_t *rng) { return((double)(random_uint64(rng) >> 11) * 0x1.0p-53); } It has the advantage of not needing bit_cast (which C lacks) and has 53 instead of 52 bits of randomness.
- smegsicle 3y agoi for one expect my random floating point numbers to have the same distribution as a random bitfield interpreted as a float, and anything else should be considered a bug
- fanf2 3y agoI don’t think that would be very useful, because there would be a 1/2048 chance of getting a NaN, and it would be difficult to convert the numbers to a known distribution.