Was ist in Python für das Zufallsmodul der Unterschied zwischen random.uniform()
und random.random()
? Beide erzeugen Pseudo-Zufallszahlen, random.uniform()
generiert Zahlen aus einer gleichmäßigen Verteilung und random.random()
generiert die nächste Zufallszahl. Was ist der Unterschied?
random.random()
gibt Ihnen eine zufällige Fließkommazahl im Bereich [0.0, 1.0)
(also 0.0
, aber nicht 1.0
, der auch als halboffener Bereich bezeichnet wird). random.uniform(a, b)
gibt Ihnen eine zufällige Fließkommazahl im Bereich [a, b]
(wobei die Rundung eventuell b
ergibt).
Die Implementierung von random.uniform()
verwendet random.random()
direkt:
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)
ist im Grunde dasselbe wie random.random()
(da 1.0
mal float-Wert am nächsten bei 1.0
liegt, erhalten Sie float-Wert am nächsten bei 1.0
, es besteht kein Rundungsfehler).
Im random.random () Die Ausgabe liegt zwischen 0 und 1, und es sind keine Eingabeparameter erforderlich
Wohingegen random.uniform () nimmt Parameter an, wobei Sie den Bereich der Zufallszahl angeben können.import random as ra
print ra.random()
print ra.uniform(5,10)
AUSGABE:-0.672485369423
7.9237539416
Der Unterschied liegt in den Argumenten. Es ist sehr üblich, eine Zufallszahl aus einer gleichmäßigen Verteilung im Bereich [0.0, 1.0) zu generieren, also tut random.random()
dies einfach. Verwenden Sie random.uniform(a, b)
, um einen anderen Bereich anzugeben.
Laut der Dokumentation zu random.uniform
:
Geben Sie eine zufällige Gleitkommazahl N zurück, so dass a <= N <= b für a <= b und b <= N <= a für b <a.
während random.random
:
Liefert die nächste zufällige Fließkommazahl im Bereich [0.0, 1.0).
Das heißt Mit random.uniform
geben Sie einen Bereich an, aus dem Sie Pseudozufallszahlen ziehen, z. zwischen 3 und 10. Mit random.random
erhalten Sie eine Zahl zwischen 0 und 1.
Abgesehen von dem, was oben erwähnt wurde, kann mit .uniform()
auch mehrere Zufallszahlen generiert werden, die ebenfalls die gewünschte Form haben, was mit .random()
nicht möglich ist.
np.random.seed(99)
np.random.random()
#generates 0.6722785586307918
während der folgende Code
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]])
Dies ist nicht mit Zufallszahlen (...) möglich, und wenn Sie die Zufallszahlen (...) für ML-bezogene Dinge generieren, verwenden Sie meistens .uniform(...)
.