Ich erzeuge einen sechsstelligen Code aus den folgenden Zeichen. Diese werden verwendet, um Aufkleber zu stempeln.
Sie werden in Chargen von 10k oder weniger (vor dem Druck) erzeugt und ich sehe nicht voraus, dass es jemals mehr als 1-2 Millionen (wahrscheinlich viel weniger) geben wird.
Nachdem ich die Codesätze generiert habe, überprüfe ich die MySQL-Datenbank der bestehenden Codes, um sicherzustellen, dass es keine Duplikate gibt.
21 ^ 6 = 85766121 Möglichkeiten.
Es ist schlecht, einen DB zu verwenden und verwendete Werte zu speichern. Wenn Sie Zufälligkeiten fälschen möchten, können Sie Folgendes verwenden:
Reduzieren Sie auf 19 mögliche Zahlen und nutzen Sie die Tatsache, dass Gruppen der Ordnung p ^ k, wobei p eine ungerade Primzahl ist, immer zyklisch sind.
Nimm die Gruppe der Ordnung 7 ^ 19, benutze einen Generator Co-Primzahl zu 7 ^ 19 (Ich wähle 13 ^ 11, du kannst alles wählen, was nicht durch 7 teilbar ist).
Dann funktioniert das Folgende:
%Vor%Es durchläuft alle möglichen Werte und sieht ein wenig zufällig aus, wenn sie nicht graben. Eine noch sicherere Alternative wären multiplikative Gruppen, aber ich habe meine Mathematik bereits vergessen: (
rand
verwenden. Siehe str_shuffle und Zufälligkeit . rand
in mt_rand
memcached
oder redis
nicht MySQL, wenn Sie Gesamtmöglichkeit
%Vor% 85,766,121
sollte in Ordnung sein. Um eine Datenbank zu dieser Generation hinzuzufügen, versuchen Sie:
Beispiel
%Vor%Funktion verwendet
%Vor%Wie Baba sagte, wird das Erzeugen einer Schnur während der Fahrt zu Tonnen von Kollisionen führen. Je näher Sie 80 Millionen bereits generierten kommen, desto schwieriger wird es, eine verfügbare Zeichenfolge zu erhalten
Eine andere Lösung könnte sein, alle möglichen Kombinationen einmal zu erzeugen und sie alle bereits in der Datenbank zu speichern, mit einem booleschen Spaltenfeld, das angibt, ob eine Zeile / ein Token bereits verwendet wird oder nicht
dann um einen von ihnen zu bekommen
%Vor%und markieren Sie es dann als bereits verwendet
%Vor%Sie hätten 21 ^ 6 Codes = 85 766 121 ~ 85,8 Millionen Codes!
Um sie alle zu generieren (was einige Zeit dauern würde), sehen Sie sich die ausgewählte Antwort auf diese Frage an: Algorithmus, der Zahlen oder Wörter nimmt und alle möglichen Kombinationen findet .
Oder ... Sie können Benutzername + Datum in md5 kodieren und in der Datenbank speichern, das wird sicher einen eindeutigen Code erzeugen;)
Tags und Links algorithm php random permutation