In einer Ansicht in Django verwende ich random.random()
. Wie oft muss ich random.seed()
anrufen? Einmal für jede Anfrage? Einmal für jede Jahreszeit? Einmal während der Webserver läuft?Seeding random in django
Antwort
Rufen Sie random.seed()
selten, wenn überhaupt.
Um zufällig zu sein, müssen Sie zulassen, dass der Zufallszahlengenerator ausgeführt wird, ohne den Seed zu berühren. Die Reihenfolge der Zahlen ist zufällig. Wenn Sie den Seed ändern, starten Sie eine neue Sequenz. Die Startwerte sind möglicherweise nicht sehr zufällig, was zu Problemen führt.
Je nachdem, wie viele Nummern Sie benötigen, können Sie in Erwägung ziehen, den Seed regelmäßig von /dev/random
zurückzusetzen.
Sie sollten versuchen, den Seed neu zu setzen, kurz bevor Sie den vorherigen Seed verbraucht haben. Sie erhalten nicht die vollen 32 Bit an Zufälligkeit, also möchten Sie vielleicht den Seed nach dem Generieren von 2 ** 28 Zahlen zurücksetzen.
Es hängt wirklich davon ab, wofür Sie die Zufallszahl benötigen. Experimentieren Sie, um herauszufinden, ob es einen Unterschied macht. Sie sollten auch bedenken, dass es tatsächlich ein Muster für Pseudozufallszahlen gibt. Macht es einen Unterschied für Sie, wenn jemand die nächste Zufallszahl erraten kann? Wenn dies nicht der Fall ist, seed es einmal zu Beginn einer Sitzung oder wenn der Server zum ersten Mal gestartet wird.
Seeding einmal zu Beginn der Sitzung würde wahrscheinlich am sinnvollsten, IMO. Auf diese Weise erhält der Benutzer während seiner Sitzung eine Reihe von Pseudozufallszahlen. Wenn Sie jedes Mal, wenn eine Seite geliefert wird, in den Start gehen, ist dies nicht garantiert.
Verschwenden Sie nicht viel Zeit beim Experimentieren. Ändern der Samen führt zu einer Verzerrung. Wenn Sie wirklich Glück haben, erscheinen Ihre Samen zufällig für die paar Dutzend Tests, die Sie ausführen möchten. Wenn du nicht etwas Magisches hast, ist das zufällige Setzen von Samen nicht schrecklich zufällig. –
Den Seed nicht einstellen.
Die einzige Zeit, die Sie festlegen möchten, ist, wenn Sie sicherstellen möchten, dass die gleichen Ereignisse weiterhin auftreten. Zum Beispiel, wenn Sie nicht wollen, dass Spieler in Ihrem Spiel betrügen, können Sie den Samen speichern und dann einstellen, wenn sie ihr Spiel laden. Dann, egal wie oft sie speichern + neu laden, gibt es immer noch die gleichen Ergebnisse.
- 1. Seeding SQLite RANDOM()
- 2. Random Trailer App in Django
- 3. Seeding ein Pseudozufallszahlengenerator in C#
- 4. Laravel - Seeding Beziehungen
- 5. Phoenix Seeding Dates
- 6. Laravel Datenbank Seeding
- 7. Problem mein Primärschlüsselspalte Seeding
- 8. Random int ohne 'random' zu importieren
- 9. Laravel - Seeding große SQL-Datei
- 10. Initialisierung und Seeding Identity DbContext in App_Start
- 11. Seeding mysql Daten in einem Docker bauen
- 12. Seeding-Dateien aus dem Browser
- 13. Seeding Database Einstellung Max Länge
- 14. Random Green Hervorhebung in Atom?
- 15. urandom_range(), urandom(), random() in Verilog
- 16. Random Binary in JavaScript/Node.JS
- 17. Random Sampling in Google BigQuery
- 18. Random ArrayIndexOutOfBoundsException in JavaFX-Anwendung
- 19. Get random vector3 in Flugzeug
- 20. Wie durch random() in ORMLite
- 21. Random Forest speichern
- 22. Haskell Random von Datatype
- 23. Random crash debuggen
- 24. SQL Random Query
- 25. Random Forest ist übersteuert
- 26. Rails Cachen „random“ Abfrage
- 27. Random Tile Layout
- 28. Python: Random Systemzeit Seed
- 29. Random Walker Code Python
- 30. Generate Random Binary Matrix
Im Zusammenhang mit http://stackoverflow.com/questions/203382/do-stateless-random-number-generators-exist, http://stackoverflow.com/questions/1108780/why-do-i-always-get -die-gleiche-Folge-von-Zufallszahlen-mit-Rand, http://stackoverflow.com/questions/976993/issues-with-seeding-a-pseudo-random-number-generator-more-than-once –