【问题标题】:Why does numpy use the half-open interval for its uniform random?为什么 numpy 使用半开区间作为其均匀随机数?
【发布时间】:2016-02-23 18:58:05
【问题描述】:

所有 numpy 的随机函数都说:

创建给定形状的数组并随机传播 来自 [0, 1) 上的均匀分布的样本。

(见此处:http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.rand.html#numpy.random.rand

使用半开区间[0, 1)的原因是什么?从概率的角度来看,是否包含 1 无关紧要。

【问题讨论】:

  • 请注意,numpy 实际上并没有全面执行此操作:np.random.uniform(a,b) 声称是半开放的,但 np.random.uniform(0, np.nextafter(0, 1)) 将在一半时间返回上限。
  • 除其他外,它与从零开始的数组很好地集成。将您的 [0,1) 值乘以数组的长度和int,它将产生一个随机选择的有效数组索引,所有索引的可能性均等。

标签: python numpy random


【解决方案1】:

使用任意精度确实无关紧要,因为达到任何给定实数的概率为零(仅在一个区间内非零)。

在计算上它确实很重要,因为您使用有限的数值分辨率(例如双数)。所以每个区间实际上都是一个闭区间。

默认情况下使用半开间隔可以避免堆叠间隔时出现问题。所以 [0,1) 和 [1,2) 不会有共同的数字。

关于实现开放开放间隔和其他问题,请参阅例如 this other stackoverflow question

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 2021-12-28
    • 2011-08-08
    • 2020-04-04
    • 2018-03-31
    相关资源
    最近更新 更多