随机生成的浮点数的概率在一定范围内

pro*_*eek 5 floating-point probability

假设我随机生成一个数字并检查它是否在某个范围内.对于整数,它很简单.例如,对于无符号8位,随机生成的数字可以在范围(0-5,包括0和5)内,概率为(6/2 ^ 8).

我的问题是如何用浮点数计算相同的东西.例如,当我只是随机生成32位时,该数字在-10.0和10.0范围内的概率是多少?

aka*_*ice 3

假设采用二进制表示,可以计算范围 [2^n,2^n+1) 的概率。
例如,如果指数为 11 位,则概率为 1/2^12(考虑到符号)

在这样的区间内,可以考虑浮点数的均匀密度。

那么我想你可以尝试将你的区间分解为 2 个边界的幂。
然后计算每个间隔的概率,并对它们进行求和...
假设有一个类似 IEEE-754 的非正规表示,对于最小可能的指数 e,间隔是 [0,2^e[
所以这应该给你一个相当程序很简单,但我没有看到简单的公式。

对于非常准确的概率,您必须处理下限和上限区间内最接近的可表示浮点数的有效数字位模式。