繁体   English   中英

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

[英]In python, what is the difference between random.uniform() and random.random()?

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

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

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.0 最接近1.0浮点值仍然会给你最接近1.0浮点值,那里不存在舍入误差)。

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

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

输出: -
0.672485369423 7.9237539416

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

根据random.uniform上的文档:

返回随机浮点数N,使得对于<= b,a <= N <= b,对于b <a,b <= N <= a。

random.random

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

即使用random.uniform您可以指定从中绘制伪随机数的范围,例如在3和10之间。使用random.random您将获得介于0和1之间的数字。

除了上面提到的内容之外, .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]])

这不能用随机(...)来完成,如果你为ML相关的东西生成随机(...)数字,大多数时候,你最终会使用.uniform(...)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM