我们假设我随机生成一个数字并检查它是否在某个范围内。 对于整数,它很简单。例如,对于无符号8位,随机生成的数字可以在范围(0-5,包括0和5)内,概率为(6/2 ^ 8)。
我的问题是如何用浮点数计算相同的东西。例如,当我只是随机生成32位时,该数字在-10.0和10.0范围内的概率是多少?
答案 0 :(得分:3)
假设二进制表示,可以针对范围[2 ^ n,2 ^ n + 1]计算概率 例如,如果指数是11位,概率是1/2 ^ 12(考虑到登记)
在这样的间隔内,可以考虑均匀的浮点密度。
然后我猜你可以尝试将你的间隔分解成2个边界的权力
然后计算每个区间的概率,并将它们全部相加...
假设存在类似IEEE-754的非正规表示,对于最小可能的指数e,区间为[0,2 ^ e [
所以这应该给你一个相当简单的程序,但我看不到简单的公式。
对于非常准确的概率,您必须在下限和上限的区间内处理最近可表示浮点数的有效位模式。
答案 1 :(得分:0)
看起来你应该能够通过查看10.0的IEEE 754表示(编辑:或任何感兴趣的值)来取得进展 - 浮点数的幅度小于具有较小指数的浮点数,或相同指数和较小的尾数。我猜你可以弄清楚指数和尾数有多少可能的值,然后从那里开始。