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

NKC*_*KCP 33 python random uniform

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

Mar*_*ers 45

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()
Run Code Online (Sandbox Code Playgroud)

random.uniform(0, 1)基本上是同样的事情random.random()(如1.0浮点值最接近1.0仍然会给你浮点值最接近1.0没有一个舍入误差的存在的可能性).


Dak*_*ksh 9

除了上面提到的之外,.uniform()还可以用于生成多个随机数,这些随机数也具有所需的形状,这是不可能的.random()

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

#generates 0.6722785586307918
Run Code Online (Sandbox Code Playgroud)

而下面的代码

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]])
Run Code Online (Sandbox Code Playgroud)

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


Bil*_*ard 5

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


小智 5

random.random()中,输出位于0和1之间,并且不包含任何输入参数

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

输出:-
0.672485369423 7.9237539416