Generating random numbers on open-open interval (0,1) efficiently

后端 未结 4 846
有刺的猬
有刺的猬 2021-01-05 21:08

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 cl

4条回答
  •  梦毁少年i
    2021-01-05 21:41

    You are already there.

    The smallest distance between two floats your current generator produces is 1/(2^32).

    So, your generator is efectively producing [0,1-1/(2^32)].

    1/(2^32) is greater than FLT_MIN.

    Thus if you add FLT_MIN to your generator,

    float open_open_flt = FLT_MIN + closed_open_flt;
    

    you'll get [FLT_MIN,1-(1/(2^32))+FLT_MIN], which works as a (0,1) generator.

提交回复
热议问题