Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Floating point 随机生成浮点数的概率在一定范围内_Floating Point_Probability - Fatal编程技术网

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

Floating point 随机生成浮点数的概率在一定范围内,floating-point,probability,Floating Point,Probability,假设我随机生成一个数字,并检查它是否在某个范围内。 对于integer,它很简单。例如,对于无符号8位,随机生成的数字可以在概率为(6/2^8)的范围内(包括0-5) 我的问题是如何用浮点数计算相同的东西。例如,当我随机生成32位时,数字在-10.0到10.0范围内的概率是多少 假设采用二进制表示,可以计算范围[2^n,2^n+1]的概率 例如,如果指数为11位,则概率为1/2^12(考虑符号) 在这样的区间内,有可能考虑一个均匀的浮点密度。 那么我想你可以试着把你的时间间隔分解成两个边界的幂。

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


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

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

在这样的区间内,有可能考虑一个均匀的浮点密度。 那么我想你可以试着把你的时间间隔分解成两个边界的幂。
然后计算每个区间的概率,并将它们相加…
假设存在类似IEEE-754的非规范表示,对于可能的最小指数e,区间为[0,2^e[
这应该给你们一个相当简单的过程,但我看不到简单的公式


要获得非常精确的概率,您必须处理区间内最接近的可表示浮点的有效位模式的下限和上限。

似乎您应该能够通过查看10.0的IEEE 754表示(编辑:或任何感兴趣的值)来取得进展--一个数量级小于指数的浮点,或者同一个指数和尾数的尾数更小。我猜你可以计算出指数和尾数可能有多少个值,然后从那里开始。

有什么问题吗
(a-b)/(MAX-MIN)
(其中
a
b
是间隔的终点,
MAX
MIN
是可以生成的最大/最小值)?@arshajii:因为它是浮点数,所以数字的密度分布不均匀。好的,我明白了;谢谢你的澄清。这可能会有帮助-。作为第一近似值,数字将是对数分布的。