Ich habe kürzlich so etwas gemacht, um aus 62 Zeichen eine 8-Byte-Zufallszeichenfolge zu generieren. Die Zeichen waren 0-9, az, AZ. Ich hatte ein Array von ihnen, wie es 8-mal wiederholt wurde und einen zufälligen Wert aus dem Array auswählte. Dies war in einer Rails-App.
str = ''
8.times {|i| str << ARRAY_OF_POSSIBLE_VALUES[rand(SIZE_OF_ARRAY_OF_POSSIBLE_VALUES)] }
Das Seltsame ist, dass ich eine gute Anzahl von Duplikaten habe. Zufällig sollte dies so gut wie nie passieren. 62 ^ 8 ist riesig, aber von ungefähr 1200 Codes in der Datenbank hatte ich eine gute Anzahl von Duplikaten. Ich bemerkte, dass sie an Stundengrenzen voneinander passierten. Mit anderen Worten, ich könnte ein Duplikat um 12:12:23 und 2:12:22 oder so etwas sehen ... nicht sicher, ob die Zeit das Problem ist oder nicht.
Dieser Code wurde vor dem Erstellen eines ActiveRecord-Objekts erstellt. Bevor der Datensatz erstellt wurde, wurde dieser Code ausgeführt und der "eindeutige" Code generiert. Einträge in der DB wurden immer zuverlässig erstellt, aber der Code ( str
in der obigen Zeile) wurde viel zu oft dupliziert.
Ich habe ein Skript erstellt, um 100000 Iterationen dieser obigen Zeile mit geringer Verzögerung zu durchlaufen, sodass es 3-4 Stunden dauern würde, in der Hoffnung, stündlich ein Wiederholungsmuster zu sehen, aber nichts zu sehen. Ich habe keine Ahnung, warum dies in meiner Rails-App passiert ist.