生成特定随机数的概率,例如在MATLAB中

时间:2013-07-10 15:45:11

标签: matlab random probability

在实际概率中,从区间p中的所有实数中选择的随机数(0,1)将为0.5的概率为0%。但是,

的几率是多少
rand == 0.5

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

3 个答案:

答案 0 :(得分:1)

没有关于MATLAB生成器的具体信息......

一般来说,即使是简单的pseudo-random generators也有足够长的周期,可以覆盖所有可以表示为double的值。

如果MATLAB使用其他形式生成随机数,那就更好了 - 所以假设它统一涵盖了整个范围的双值。

我相信概率可能是:您感兴趣的值周围的可表示数字之间的距离除以间隔的长度。有关距离的讨论,请参阅What is the minimal step in double data type? (.NET)

答案 1 :(得分:1)

this question,我们看到有2 62 - 2 52 在区间(0 1)中加倍。因此,挑选任何一个(如0.5)的概率大致等于除以该数字的概率,或

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

但是,正如horchler已经指出的那样,它还取决于您使用的随机数生成器的类型,以及MATLAB的实现。遗憾的是,我只掌握了每个实现细节的基本知识,但是您可以查看here以获取MATLAB中可用随机数生成器的列表,并进一步查看更精确的数字。

答案 2 :(得分: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