I'm looking for an efficient way to generate random floating-point numbers on the open-open interval (0,1). I currently have an RNG that generates random integers on the closed-closed interval of [0, (2^32)-1]. I've already created a half-open floating point RNG on the interval [0,1) by simply multiplying my result from the integer RNG by 1/((2^32)-1) rather than dividing by (2^32)-1 since it's inefficient.
The way I'm currently going about generating numbers on the interval (0,1) is with a conditional statement like the one below:
float open_open_flt = (closed_open_flt==0) ? closed_open_flt : FLT_MIN;
Unfortunately, this is rather inefficient since it is control code and I feel like it introduces some bias.
Can anybody suggest an alternative?

0x1p-32.float, presumably IEEE-754 32-bit binary, so they ought to be getting 1 occasionally due to rounding, regardless of which of those values they multiply by.FLT_RADIXis 2, then no rounding occurs.floathas fewer than 32 bits of precision. Usedoubleor drop some bits from the integers first.