10

我目前正在尝试从均匀分布中提取浮点数。

Numpy 提供了 numpy.random.uniform。

import numpy as np
sample = np.random.uniform (0, 1, size = (N,) + (2,) + (2,) * K)

但是,此模块在半开区间 [0, 1) 上生成值。

如何从均匀分布中绘制带有 [0, 1] 的浮点数?

谢谢。

4

4 回答 4

10

无论您是从 (0,1) 还是 [0,1] 或 [0,1) 或 (0,1] 绘制均匀分布的数字都没有关系。因为得到 0 或 1 的概率为零。

于 2013-02-17T14:56:31.620 回答
3

random_integers在闭合区间上生成整数。因此,如果您可以将您的实际问题改写为使用整数,那么您就大功告成了。否则,您可以考虑 1./MAX_INT 的粒度是否足以解决您的问题。

于 2013-02-17T16:26:56.937 回答
2

来自标准 Python random.uniform 文档

取决于等式 a + (ba) * random() 中的浮点舍入,端点值 b 可能包含在范围内,也可能不包含在范围内。

所以基本上,端点的包含严格基于所使用的浮点舍入方案。因此,要包含 1.0,您需要定义操作所需的精度并相应地舍入随机数。如果您的问题没有定义的精度,您可以使用numpy.nextafter先前的答案涵盖了它的用法。

于 2013-02-17T16:08:42.250 回答
0

如果您的软件依赖于两者之间的差异[0,1)[0,1]那么您可能应该推出自己的随机数生成器,可能是这里提到的那个,以确保它满足这些严格的要求。

于 2013-02-22T20:20:23.917 回答