random.choice () liefert denselben Wert zur selben Sekunde, wie vermeidet man das?

8

Ich habe ähnliche Fragen bezüglich der Generierung von Zufallszahlen in Python untersucht. Beispiel: Ähnliche Frage - aber ich habe nicht das Problem, dass die Random-Funktion zurückkehrt gleiche Werte jedes Mal.

Mein Zufallsgenerator funktioniert gut, das Problem ist, dass er den gleichen Wert zurückgibt, wenn ich die Funktion anrufe, was ich denke, dieselbe Sekunde, die unerwünscht ist.

Mein Code sieht so aus

%Vor%

Wie ich bereits erwähnt habe, gibt diese Funktion verschiedene Werte zurück, wenn sie zu unterschiedlichen Zeiten aufgerufen wird, gibt aber denselben Wert zurück, wenn die Funktion gleichzeitig aufgerufen wird. Wie vermeide ich dieses Problem?

Ich verwende diese Funktion in einem Back-End-Server, um eindeutige IDs für Benutzer im Frontend zu erstellen, die in eine Datenbank eingefügt werden sollen, damit ich die Zeitintervalle nicht kontrollieren kann, wenn dies geschieht. Ich muss zufällige Tokens haben, um die Benutzer in der Datenbank abzubilden, um sie korrekt mit Warteschlangennummern in der Datenbank einfügen zu können.

    
Axel Ekeberg 21.09.2015, 09:51
quelle

3 Antworten

4

Sie könnten die Sache möglicherweise verbessern, indem Sie random.SystemRandom() wie folgt verwenden:

%Vor%

Dies versucht, die Funktion os.urandom() zu verwenden, die Zufallszahlen aus Quellen erzeugt, die vom Betriebssystem bereitgestellt werden.

    
Martin Evans 21.09.2015, 10:11
quelle
1

Eine andere Option wäre, den Seed mit dem vorherigen Ergebnis zu aktualisieren, um eine Pseudozufallssequenz zu erhalten. Eine Option wäre old_seed XOR Ergebnis oder nur das Ergebnis.

    
allo 21.09.2015 14:14
quelle
1
%Vor%

Dieses Skript im 3. Test von 10 Millionen IDs hat sie alle einmal einzigartig gemacht

Das Ändern der Schleife in die Liste hat sich ziemlich beschleunigt.

%Vor%

Dieses Skript verwendet Permutationen mit Wiederholung: 62 wähle 36, theoretisch ist die Gesamtzahl der IDs ziemlich groß, es ist pow (62,36)

%Vor%     
LetzerWille 21.09.2015 10:18
quelle

Tags und Links