wake-up-neo.net

Was ist der Unterschied zwischen random.uniform () und random.random () in Python?

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? 

20
NKCP

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).

31
Martijn Pieters

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

4

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.

3
Bill the Lizard

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.

1
RickardSjogren

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(...).

0
Daksh