[英]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。
返回[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.