在随机模块的python中,random.uniform()
和random.random()
之间有什么区别?它们都生成伪随机数,random.uniform()
从均匀分布生成数字,random.random()
生成下一个随机数。有什么不同?
答案 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.0
次离1.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 }}