В python для случайного модуля, в чем разница между random.uniform()
и random.random()
? Они генерируют псевдослучайные числа, random.uniform()
генерируют числа из равномерного распределения, а random.random()
генерирует следующее случайное число. В чем разница?
В python, в чем разница между random.uniform() и random.random()?
Ответ 1
random.random()
дает вам случайное число с плавающей запятой в диапазоне [0.0, 1.0)
(включая включение 0.0
, но не включая 1.0
, который также известен как полуоткрытый диапазон). random.uniform(a, b)
дает вам случайное число с плавающей запятой в диапазоне [a, b]
(где округление может дать вам b
).
Реализация напрямую использует 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
times float value, ближайший к 1.0
, все равно даст вам значение с плавающей точкой ближе к 1.0
, там нет возможности ошибки округления).
Ответ 2
Разница в аргументах. Очень часто генерируется случайное число из равномерного распределения в диапазоне [0.0, 1.0], поэтому random.random()
просто делает это. Используйте random.uniform(a, b)
, чтобы указать другой диапазон.
Ответ 3
В random.random() вывод находится между 0 и 1 и не принимает входных параметров
В то время как random.uniform() принимает параметры, в которых вы можете отправить диапазон случайного числа.
например import random as ra
print ra.random()
print ra.uniform(5,10)
ВЫВОД: - 0.672485369423
7.9237539416
Ответ 4
Согласно документации на random.uniform
:
Возвращает случайное число N с плавающей запятой, такое, что a <= N <= b для a <= b и b <= N <= a для b < а.
while random.random
:
Возвращает следующее случайное число с плавающей запятой в диапазоне [0.0, 1.0].
т.е. с random.uniform
вы указываете диапазон, на который вы производите псевдослучайные числа, например, между 3 и 10. С помощью random.random
вы получаете число от 0 до 1.
Ответ 5
Помимо того, что было упомянуто выше, .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(...)