Ree*_*d B 1 c math discrete-mathematics
我听说某处有.9和1之间的数字多于0和.1之间的数字,当它们表示为离散有限位时(为了参数,我们假设32位浮点数).有人可以向我解释为什么会出现这种情况,并给出一个0和.1之间的数字的例子,这个数字不能被表示,但它的相应数字在.9和1之间(通过数学上加上.9)可以用浮动?
(这与rng相关,因为它们可能偏向不同的范围.)
您的推理错误的基本原因是添加0.9不是可逆操作.但是你有倒退.0.0到0.1之间的浮点数多于0.9到1.0之间.
至于如何制作无偏浮点RNG,您应该首先生成[1.0,2.0]范围内的数字,然后相应地转换和缩放结果.这是有效的,因为区间[1.0,2.0]在整个范围内具有统一的精度(该范围内的所有数字的指数都相同).
如果您正在使用IEEE单精度,其形式如下:
s eeeeeeee mmmmmmmmmmmmmmmmmmmmmmm
Run Code Online (Sandbox Code Playgroud)
只需修复符号和指数位,并使用均匀随机PRNG作为整数来填充尾数位.同样适用于双倍.