在python中,random.uniform()和random.random()有什么区别?

时间:2015-05-04 12:51:44

标签: python random uniform

在随机模块的python中,random.uniform()random.random()之间有什么区别?它们都生成伪随机数,random.uniform()从均匀分布生成数字,random.random()生成下一个随机数。有什么不同?

5 个答案:

答案 0 :(得分:38)

random.random()为您提供[0.0, 1.0)范围内的随机浮点数(包括0.0,但不包括1.0,也称为半开放范围)。 random.uniform(a, b)为您提供[a, b]范围内的随机浮点数(其中舍入可能最终为您提供b)。

implementation of random.uniform()直接使用random.random()

def uniform(self, a, b):
    "Get a random number in the range [a, b) or [a, b] depending on rounding."
    return a + (b-a) * self.random()

random.uniform(0, 1)random.random()基本相同(因为1.01.0 最近的浮点值仍会给你浮动值最接近1.0 ,那里不可能出现舍入误差。

答案 1 :(得分:5)

random.random()中,输出介于0和0之间。 1,它不需要输入参数

然后 random.uniform()接受参数,其中您可以提交随机数的范围。 例如
import random as ra print ra.random() print ra.uniform(5,10)

输出: -
0.672485369423 7.9237539416

答案 2 :(得分:3)

不同之处在于论点。从[0.0,1.0]范围内的均匀分布生成随机数非常常见,因此random.random()就是这样做的。使用random.uniform(a, b)指定不同的范围。

答案 3 :(得分:1)

根据random.uniform上的文件:

  

返回随机浮点数N,使得&lt; = N&lt; = b,a&lt; = b,b&lt; = N&lt; = a,b <&lt;一个。

while random.random

  

返回[0.0,1.0)范围内的下一个随机浮点数。

即。使用random.uniform指定从中绘制伪随机数的范围,例如使用random.random得到0到1之间的数字。

答案 4 :(得分:0)

除了上面提到的以外,.uniform()还可以用于生成多个随机数,这些随机数也具有所需的形状,而.random()则无法实现

np.random.seed(99)
np.random.random()

#generates 0.6722785586307918

同时输入以下代码

np.random.seed(99)
np.random.uniform(0.0, 1.0, size = (5,2))

#generates this 
array([[0.67227856, 0.4880784 ],
       [0.82549517, 0.03144639],
       [0.80804996, 0.56561742],
       [0.2976225 , 0.04669572],
       [0.9906274 , 0.00682573]])

这不能用random(...)完成,并且如果您要为ML相关事物生成随机数(...),大多数情况下,您最终会使用{{1 }}