我目前正在尝试从均匀分布中提取浮点数。
Numpy 提供了 numpy.random.uniform。
import numpy as np
sample = np.random.uniform (0, 1, size = (N,) + (2,) + (2,) * K)
但是,此模块在半开区间 [0, 1) 上生成值。
如何从均匀分布中绘制带有 [0, 1] 的浮点数?
谢谢。
无论您是从 (0,1) 还是 [0,1] 或 [0,1) 或 (0,1] 绘制均匀分布的数字都没有关系。因为得到 0 或 1 的概率为零。
random_integers在闭合区间上生成整数。因此,如果您可以将您的实际问题改写为使用整数,那么您就大功告成了。否则,您可以考虑 1./MAX_INT 的粒度是否足以解决您的问题。
来自标准 Python random.uniform 文档:
取决于等式 a + (ba) * random() 中的浮点舍入,端点值 b 可能包含在范围内,也可能不包含在范围内。
所以基本上,端点的包含严格基于所使用的浮点舍入方案。因此,要包含 1.0,您需要定义操作所需的精度并相应地舍入随机数。如果您的问题没有定义的精度,您可以使用numpy.nextafter。先前的答案涵盖了它的用法。
如果您的软件依赖于两者之间的差异[0,1)
,[0,1]
那么您可能应该推出自己的随机数生成器,可能是这里提到的那个,以确保它满足这些严格的要求。