Python 为什么numpy使用半开区间作为其均匀随机变量?

Python 为什么numpy使用半开区间作为其均匀随机变量?,python,numpy,random,Python,Numpy,Random,所有numpy的随机函数都表示: 创建给定形状的数组,并使用随机 来自[0,1]上均匀分布的样本 (见此处:) 使用半开区间[0,1]的原因是什么?从概率论的角度来看,1是否包含并不重要。以任意精度来说,它确实无关紧要,因为达到任何给定实数的概率为零(仅对于区间而言,非零) 从计算上来说,这很重要,因为你使用有限的数值分辨率(例如双数)。所以每个区间实际上都是一个闭合区间 默认情况下,使用半开间隔可以避免堆叠间隔时出现问题。因此[0,1]和[1,2]将没有公共数字 有关实现开放间隔和其他问题,请

所有numpy的随机函数都表示:

创建给定形状的数组,并使用随机 来自[0,1]上均匀分布的样本

(见此处:)


使用半开区间[0,1]的原因是什么?从概率论的角度来看,1是否包含并不重要。

以任意精度来说,它确实无关紧要,因为达到任何给定实数的概率为零(仅对于区间而言,非零)

从计算上来说,这很重要,因为你使用有限的数值分辨率(例如双数)。所以每个区间实际上都是一个闭合区间

默认情况下,使用半开间隔可以避免堆叠间隔时出现问题。因此[0,1]和[1,2]将没有公共数字

有关实现开放间隔和其他问题,请参见。

大多数随机数生成器都是这样做的。例如,请注意,numpy实际上并没有全面实施这一点:
np.random.uniform(a,b)
声称是半开的,但
np.random.uniform(0,np.nextafter(0,1))
将返回一半时间的上限。除其他外,它与基于零的数组很好地集成。将[0,1)值乘以数组长度和
int
将生成随机选择的有效数组索引,所有索引的可能性相等。