代码之家  ›  专栏  ›  技术社区  ›  Stef1611

比特级的均匀随机分布

  •  0
  • Stef1611  · 技术社区  · 3 年前

    我想了解均匀随机分布是如何在比特级别工作的。
    例如,在fortran中 random_number 给出了[0,1)之间的均匀分布。实数有尾数和指数。所以,我想知道是否所有可能的数字(在比特级别)都得到了。在这种情况下,如果我考虑比特级别的数字,它们将不会有相同的概率被选择。或者另一种解决方案,不是所有的数字都被使用,数字具有相同的间隔:两个数字之间的最大间隔(即指数=0,所有尾数位=1-所有尾数比特,但last=1和last=0)。
    有什么链接可以解释吗?

    0 回复  |  直到 3 年前
        1
  •  1
  •   Peter O. Manuel Pinto    3 年前

    原则上,这很容易。

    (0,1)中的均匀随机变量分布为:

    b 0 /2+ b 1. /4+ b 2. /8+。。。,

    哪里 b 是无偏随机位(0和1)。

    这是一个非常古老的见解,至少可以追溯到冯·诺依曼(1951年,“与随机数字有关的各种技术”)。

    因此,原则上,所需要的只是生成一个稳定的无偏随机比特序列。

    但是,相比之下,在区间(0,1)中生成一个“统一”浮点数是不平凡的。例如,请参见以下内容:

    Random floating point double in Inclusive Range


    要回复您的评论:

    理论上,(0,1)上的均匀分布与[0,1)、(0,1]或[0,1]上的一致分布相同:值0和1出现的概率为零,(0、1)上任何特定数也是如此。然而,(0,1)上的“统一”浮点数与[0,1)、(0,1]或[0,1]上的浮点数不同,因为0和1的出现概率可能为正,这取决于区间分别包含0或1。实际上,在[0,1]上的“一致”浮点数上“丢弃”0和1是在(0,l)上获得“统一”浮点数的最佳方法。

    推荐文章