Comment Comment by listeria weirdly enough, the provided implementation of rand_float() actually generates numbers in the interval [0, 1).I haven't read the implementation of _generate_canonical_generic(), but the following special case in generate_canonical() applies here: if constexpr (prng_is_bit_uniform && sizeof(T) == 4 && sizeof(generated_type) == 8) { return (static_cast<std::uint32_t>(gen()) >> exponent_bits_32) * mantissa_hex_32; } which boils down to: return (static_cast<std::uint32_t>(gen()) >> 8) * 0x1.p-24; that is, a number in the interval [0, 2^24) divided by 2^24. parent listeria 1 year ago
I haven't read the implementation of _generate_canonical_generic(), but the following special case in generate_canonical() applies here:
which boils down to: that is, a number in the interval [0, 2^24) divided by 2^24.