Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Algorithmus zum Generieren einer Zufallszahl

Nein, Ihr Algorithmus ist nicht skalierbar. Was ich zuvor getan habe, ist, Zahlen seriell auszugeben (+1 jedes Mal) und sie dann durch eine XOR-Operation zu leiten, um die Bits durcheinander zu bringen, wodurch ich scheinbar zufällige Zahlen erhalte. Natürlich sind sie nicht wirklich zufällig, aber für die Augen des Benutzers sehen sie so aus.

[Bearbeiten] Zusätzliche Informationen

Die Logik dieses Algorithmus sieht folgendermaßen aus:Sie verwenden eine bekannte Sequenz, um eindeutige Zahlen zu generieren, und manipulieren sie dann deterministisch, sodass sie nicht mehr seriell aussehen. Die allgemeine Lösung besteht darin, eine Form der Verschlüsselung zu verwenden, was in meinem Fall ein XOR-Flipflop war, weil es so schnell wie möglich ist und die Garantie erfüllt, dass Zahlen niemals kollidieren.

Sie können jedoch andere Formen der Verschlüsselung verwenden, wenn Sie noch mehr zufällig aussehende Zahlen der Geschwindigkeit vorziehen möchten (sagen Sie, Sie müssen nicht viele IDs gleichzeitig generieren). Der wichtige Punkt bei der Auswahl eines Verschlüsselungsalgorithmus ist nun "die Garantie, dass Zahlen niemals kollidieren". Und eine Möglichkeit zu beweisen, ob ein Verschlüsselungsalgorithmus diese Garantie erfüllen kann, besteht darin, zu prüfen, ob sowohl die ursprüngliche Zahl als auch das Ergebnis der Verschlüsselung die gleiche Anzahl von Bits haben und dass der Algorithmus umkehrbar ist (Bijektion).

[Dank an Adam Liss &CesarB zur Erweiterung der Lösung]