Christian Kruse: nichtfortlaufende, eindeutige Nummer erzeugen

Beitrag lesen

Moin Ralf,

Ich erzeuge ein Array das die Zahlen 1-1.000.000 enthält. Mit einer Zufallsfunktion nehme ich ein Element, lösche es aus dem Array

Dieser Schritt ist überflüssig :-) Nimm einen Array und speichere, welche Ziffer zwischen 1 und 1000000 du schon hattest. Damit sparst du dir 1.000.000 Operationen zuzüglich zu den teuren Slice-Operationen.

Was meint Ihr dazu?
Geht das auch eleganter?

Ich an deiner Stelle würde einen UNIQUE-Index über EAN legen und schlicht solange mit einem Zufallsgenerator eine Zufallszahl (innerhalb eines gewissen Wertebereichs) erzeugen und versuchen den Datensatz einzufügen, bis das einfügen nicht mehr an dem UNIQUE-Index scheitert. Damit hast du eine eindeutige, nicht fortlaufende Ziffer, das ganze frei von race conditions und Kollisionen.

LG,
 CK