使用numpy从均匀分布中绘制带[0,1]的浮点数

时间:2013-02-17 14:47:29

标签: python numpy uniform

我目前正在尝试从统一分布中绘制浮动数字。

Numpy提供了numpy.random.uniform。

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

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

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

感谢。

4 个答案:

答案 0 :(得分:4)

如果从(0,1)或[0,1]或[0,1)或(0,1)中绘制均匀分布的数字,则无关紧要。因为获得0或1的概率是零。

答案 1 :(得分:2)

来自标准Python random.uniform documentation

  

根据等式a +(b-a)* random()中的浮点舍入,终点值b可能包含也可能不包含在范围内。

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

答案 2 :(得分:2)

random_integers在封闭的时间间隔内生成整数。所以,如果你可以将你的实际问题改成使用整数,那么你就完全没有了。否则,您可以考虑1./MAX_INT的粒度是否足以解决您的问题。

答案 3 :(得分:0)

如果您的软件取决于[0,1)[0,1]之间的差异,那么您应该推出自己的随机数生成器,可能是the one mentioned here,以确保它符合这些严格的要求。