510 Stimmen

Was macht numpy.random.seed(0)?

Was macht np.random.seed?

np.random.seed(0)

5voto

WadeWilson Punkte 51

Alle Antworten oben zeigen die Implementierung von np.random.seed() im Code. Ich werde mein Bestes geben, um kurz zu erklären, warum das tatsächlich passiert. Computer sind Maschinen, die auf vordefinierten Algorithmen basieren. Jede Ausgabe eines Computers ist das Ergebnis des Algorithmus, der auf der Eingabe implementiert ist. Also, wenn wir einen Computer bitten, Zufallszahlen zu generieren, sind sie sicherlich zufällig, aber der Computer hat sie nicht einfach zufällig erfunden!

Wenn wir also np.random.seed(eine_beliebige_nummer_hier) schreiben, wird der Algorithmus eine bestimmte Menge von Zahlen ausgeben, die einzigartig für das Argument eine_beliebige_nummer_hier ist. Es ist fast so, als ob eine bestimmte Menge von Zufallszahlen erhalten werden kann, wenn wir das richtige Argument übergeben. Aber das würde von uns verlangen, dass wir wissen, wie der Algorithmus funktioniert, was ziemlich mühsam ist.

Also, wenn ich zum Beispiel np.random.seed(10) schreibe, bleibt die spezielle Menge von Zahlen, die ich erhalte, gleich, auch wenn ich dieselbe Zeile nach 10 Jahren wieder ausführe, es sei denn, der Algorithmus ändert sich.

3voto

cjHerold Punkte 31

Stell dir vor, du zeigst jemandem, wie man etwas codiert, mit einer Menge von "zufälligen" Zahlen. Indem man den numpy Seed verwendet, können sie dieselbe Seed-Nummer verwenden und dieselbe Reihe von "zufälligen" Zahlen erhalten.

Es ist also nicht wirklich zufällig, weil ein Algorithmus die Zahlen ausspuckt, aber es sieht aus wie eine zufällig generierte Reihe.

2voto

sunidhi mittal Punkte 21

Ein Zufallszahlensamen legt den Startpunkt fest, wenn ein Computer eine Zufallsfolge generiert.

Zum Beispiel, nehmen wir an, Sie wollten eine Zufallszahl in Excel generieren (Hinweis: Excel setzt ein Limit von 9999 für den Samen). Wenn Sie während des Prozesses eine Zahl in das Feld Random Seed eingeben, können Sie dieselbe Reihe von Zufallszahlen erneut verwenden. Wenn Sie "77" in das Feld eingegeben haben und beim nächsten Mal den Zufallszahlengenerator ausführen und erneut "77" eingeben, zeigt Excel dieselbe Reihe von Zufallszahlen an. Falls Sie "99" eingeben, erhalten Sie eine völlig andere Zahlenreihe. Aber wenn Sie wieder zum Samen 77 zurückkehren, erhalten Sie dieselbe Zufallszahlenreihe, mit der Sie begonnen haben.

Beispiel: "Nehmen wir eine Zahl x, addieren 900+x und subtrahieren dann 52." Damit der Prozess beginnt, müssen Sie eine Startnummer angeben, x (der Samen). Nehmen wir die Startnummer 77:

Addiere 900 + 77 = 977 Subtrahiere 52 = 925 Nach demselben Algorithmus wäre die zweite "zufällige" Zahl:

900 + 925 = 1825 Subtrahiere 52 = 1773 Dieses einfache Beispiel folgt einem Muster, aber die Algorithmen hinter der Zufallszahlenkreation am Computer sind viel komplizierter

1voto

Poe Dator Punkte 3807

Es gibt eine gute Erklärung in den Numpy-Dokumenten: https://docs.scipy.org/doc/numpy-1.15.1/reference/generated/numpy.random.RandomState.html Es bezieht sich auf den Mersenne Twister Pseudo-Zufallszahlengenerator. Weitere Details zum Algorithmus finden Sie hier: https://en.wikipedia.org/wiki/Mersenne_Twister

1voto

numpy.random.seed(0)
numpy.random.randint(10, size=5)

Dies erzeugt die folgende Ausgabe: array([5, 0, 3, 3, 7]) Wenn wir denselben Code erneut ausführen, erhalten wir dasselbe Ergebnis.

Jetzt, wenn wir den Seed-Wert von 0 auf 1 oder andere ändern:

numpy.random.seed(1)
numpy.random.randint(10, size=5)

Dies erzeugt die folgende Ausgabe: array([5 8 9 5 0]), aber jetzt ist die Ausgabe nicht mehr gleich wie oben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X