Was ist die Wahrscheinlichkeit der Kollision mit einem 6-stelligen zufälligen alphanumerischen code?

Ich bin mit dem folgenden perl-code zu generieren zufällige alphanumerische Zeichenketten (Großbuchstaben und zahlen, nur) als eindeutige Identifikatoren für Datensätze in meiner MySQL-Datenbank. Die Datenbank wird wahrscheinlich bleiben unter 1.000.000 Zeilen, aber die absolute realistische maximum wäre etwa 3,000,000. Muss ich eine gefährliche chance, die 2 Datensätze mit der gleichen random-code, oder wird es wahrscheinlich passieren, eine verschwindend kleine Anzahl der Zeiten? Ich weiß sehr wenig über die Wahrscheinlichkeit (wenn das nicht bereits klar aus der Natur der Frage) und würde gerne jemanden Eingang.

perl -le 'print map { ("A".."Z", 0..9)[rand 36] } 1..6'
  • Warum kannst du nicht einfach verwenden, ein auto-increment Feld?
  • Wenn aus irgendeinem Grund die "auto increment" nicht funktioniert, ziehen Sie die Verwendung einer UUID statt. Diese sind entworfen, um die random-IDS mit einer minimalen chance auf Kollision. metacpan.org/module/Data::UUID
  • Wenn Sie einen eindeutigen index erstellen in der Datenbank haben, erhalten Sie eine Ausnahme von DBI, wenn eine Kollision Auftritt. Man könnte die Ausnahme abfangen, einen anderen code zu erzeugen, und versuchen Sie es erneut. Der Kurs, der nicht besonders effizient sein, wenn Sie viele der verfügbaren codes.
InformationsquelleAutor Nick | 2011-09-29
Schreibe einen Kommentar