- Ein Benutzer füllt zuerst einige Textfelder aus, zB: Name, E-Mail, Telefon.
- Dann wird er 15 Artikel angezeigt (1,2,3, ... 15).
- Weil wir nicht wollen, dass Nummer 1 immer am Anfang steht, fügen wir einige Abweichungen in der Reihenfolge der Anzeigen hinzu.
- Die Anzeigereihenfolge für diesen Benutzer (oder für diese Sitzung) wird später erneut verwendet.
- Wegen 4) können wir entweder
a) Randomisierung die einmal bestellen, dann Cache oder
b) Berechnung der Reihenfolge von ein paar Informationen des Benutzers (oder dieser Sitzung). - Für b), ich denke, um einen Hash-Wert aus dem Textfeld Eingaben,
dann konvertieren Sie die Hash-Reihenfolge um anzuzeigen. - Die Konvertierung muss nicht gleichmäßig verteilt werden, dh
die Wahrscheinlichkeit des Auftretens von jedem der 15! (= 1.3e + 12) Permutationen müssen nicht gleich sein.
M = Anzahl der Elemente
P (1) = {1,2,3, ..., M}
P (2) = {2,1,3, ... , m}
P (m) = eine PermutationVon Hash zu Permutationh = hash (Name, E-Mail, Telefon) oder hash (Sitzungs-ID), um nur einen Hash aus einem Text
N (h) = eine ganze Zahl in der Bereich [1, M]dann die Reihenfolge, die wir wollen = P (N (h))
Frage: Was ist der gute Weg zu dieser Umwandlung?
warum nicht Eingänge zu Samen Pseudozufallszahlengenerator und dann Ihre Permutation mit den Ausgaben von zufälligen Aufrufen erzeugen? – TheGreatContini
Die Berechnung der N-ten Permutation wurde bereits behandelt, zum Beispiel: https://stackoverflow.com/q/7918806/555045 – harold