2

在真实概率中,从区间中p的所有实数中选择的随机数 为 的概率为 0% 。然而,有多大的几率(0,1)0.5

rand == 0.5

在 MATLAB 中?我想这就像问在零和一之间有多少个双精度数字,或者可能还有其他因素在起作用。

4

3 回答 3

1

没有关于 MATLAB 生成器的特定信息...

通常,即使是简单的伪随机生成器也有足够长的周期,可以覆盖所有可以用 double 表示的值。

如果 MATLAB 使用某种其他形式的生成随机数,那就更好了——所以假设它均匀地覆盖了 double 值的整个范围。

我相信概率是:您感兴趣的值周围的可表示数字之间的距离除以间隔的长度。请参阅双数据类型的最小步骤是什么?(.NET)用于讨论距离。

于 2013-07-10T16:02:34.523 回答
1

查看这个问题,我们看到 区间 (0 1) 中有 2 62 - 2 52 个双精度数。因此,选择任何一个(如 0.5)的概率大致等于 1 除以该数字,或

>> p = 1/(2^62-2^52) 
ans =
    2.170523997312134e-019

但是,正如 horchler 已经指出的那样,它还取决于您使用的随机数生成器的类型,以及 MATLAB 的实现。可悲的是,我对每种方法的实现细节只有基本知识,但您可以在此处查找MATLAB 中可用的随机数生成器列表,并进一步谷歌以获取更精确的数字。

于 2013-07-10T16:02:41.837 回答
0

我不确定阿列克谢是不是想说这个,但受他的启发,我认为概率确实大约是 0.5 左右的数字之间的距离。

因此,我预计概率约为:

eps(0.5) 

计算结果为 1.1102e-16


鉴于双数之间差异的单调性,我实际上认为这是成立的:

eps(0.5-eps(0.5)) <= yourprobability  <= eps(0.5) 

暗示范围为 5.5511e-17 至 1.1102e-16

于 2013-07-11T12:18:39.003 回答