Ich beziehe mich auf Shuffle-Funktion Python zufällige Module.Zufälligkeit von Shuffle in Python
from random import shuffle
list = [1, 2, 3, 4]
shuffle(list)
Ich würde vermuten, dass obige Funktion zufällige Samen verwendet. Ich weiß, dass in C Rand-Funktion über einige zufällige Seed-Nummern im Computer iteriert. Daher wird beim zufälligen Durchlaufen der Funktion die Zufallsfunktion nicht mehr zufällig.
Funktioniert die Shuffle-Funktion ähnlich wie die Rand-Funktion in C? Wenn ja, wie kann ich meinen eigenen Samen hinzufügen, der zufällig ist? (Ich denke daran, die Zeit in Millisekunden zu verwenden, um einen einzigartigen Wert zu erzielen).
geschrieben zuvor Kommentar über die akzeptierte Antwort auf diese Frage könnte aber bekommen keine Antwort (Shuffling a list of objects in python)
EDIT:
ich sicherstellen möchten, dass zufällige Shuffle nicht seine schlurfenden nicht wiederholen Methode in einer Schleife . Zum Beispiel
Ich mag mische [1, 2, 3, 4, 5, 6]
I Schleife über 10000 mal.
Es produziert Ergebnisse unter: [1, 3, 2, 4, 5, 6] [2, 1, 4, 5, 3, 6] ... (große Anzahl von unterschiedlichen Kombinationen von shuffling) [1, 3, 2, 4, 5, 6] [2, 1, 4, 5, 3, 6] ... (wiederholt das Muster).
Ich möchte das obige Verhalten vermeiden, weil ich über eine große Anzahl von Schleifen bin. Würde das oben genannte Verhalten überhaupt passieren? Wenn ja, muss ich den Seed nach einer bestimmten Anzahl von Schleifen ändern?
Was meinst du mit „iteriert über ein paar Zufallsstartnummern in Computer“? Fragen Sie, ob die Ausgabe deterministisch ist? Fragst du, ob es "wirklich" zufällig oder nur pseudozufällig ist? – BrenBarn
Ich habe Ihren Kommentar beantwortet, aber diese Frage zeigt einen Mangel an Forschungsaufwand (also die Downvotes) - das genaue Verhalten ist im ['random' Modul] (https://docs.python.org/3/library) eindeutig dokumentiert /random.html). – dimo414
Ihre Nachfolgefrage wird auch in der Dokumentation beantwortet; Das 'Zufallsmodul '* hat eine Periode von 2 \ * \ * 19937-1 *", was bedeutet, dass es nach diesen vielen Schritten eine identische Folge von Werten ausgeben wird. Falls es nicht klar ist, das ist eine ** riesige ** Nummer. Für alle praktischen Zwecke (außer Kryptographie) ist es nicht von wahrer Zufälligkeit zu unterscheiden. – dimo414