Gutscheincode-Generierung

Ich möchte Gutscheincodes erstellen, z.AYB4ZZ2. Ich möchte jedoch auch in der Lage sein, die verwendeten Coupons zu markieren und ihre globale Anzahl zu begrenzen, sagen wir malN. Der naive Ansatz wäre so etwas wie"generierenN eindeutige alphanumerische Codes, stellen Sie diese in die Datenbank und führen Sie eine Datenbanksuche für jede Couponoperation durch. "

Soweit ich weiß, können wir dies jedoch auchversuche eine funktion zu finden MakeCoupon(n), das die angegebene Zahl in eine gutscheinähnliche Zeichenfolge mit vordefinierter Länge umwandelt.

So weit ich das verstehe,MakeCoupon sollten die folgenden Anforderungen erfüllen:

Sei bijektiv. Es ist umgekehrtMakeNumber(coupon) sollte effektiv berechenbar sein.

Ausgabe fürMakeCoupon(n) sollte alphanumerisch sein und sollte klein undKonstante Länge - damit es aufgerufen werden kannfür Menschen lesbar. Z.B.SHA1 Digest würde diese Anforderung nicht erfüllen.

Praktische Einzigartigkeit. Ergebnisse vonMakeCoupon(n) für jeden natürlichn <= N sollte völlig einzigartig sein oder einzigartig in den gleichen Begriffen wie zum BeispielMD5 ist einzigartig (mit der gleichen extrem geringen Kollisionswahrscheinlichkeit).

(Dieser ist schwierig zu definieren) Es sollte nicht offensichtlich sein, wie alle verbleibenden Coupons von einem einzigen Couponcode aufgelistet werden können - sagen wir malMakeCoupon(n) undMakeCoupon(n + 1) sollte sich optisch unterscheiden.

Z.B.MakeCoupon(n), was einfach ausgibtn mit Nullen aufgefüllt würde diese Anforderung nicht erfüllen, weil000001 und000002 unterscheiden sich eigentlich nicht "visuell".

Q:

Gibt es eine Funktion oder einen Funktionsgenerator, der die folgenden Anforderungen erfüllt? Meine Suchversuche führen mich nur zu[CPAN] Gutscheincode, es erfüllt jedoch nicht die Anforderung, dass die entsprechende Funktion bijektiv ist.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage