Im Bereich der Softwareentwicklung kann die Generierung eindeutiger und vorhersehbarer Zahlen eine verwirrende Aufgabe sein. Lassen Sie uns in eine deterministische Zahlengenerierungsfunktion eintauchen, die sicherstellt, dass keine zwei Eingaben die gleiche Ausgabe erzeugen, was effiziente und reproduzierbare Berechnungen ermöglicht.
Die Formel, die dieses Kunststück vollbringt, ist modulare Arithmetik, die häufig in der Kryptographie und der Zufallszahlengenerierung verwendet wird:
f(P) = (mP + s) mod n
wobei:
Anwenden dieser Formel, Wir können deterministische Zahlen generieren, ohne dass ein umfassendes Array oder Speicherbeschränkungen erforderlich sind. Verwenden Sie beispielsweise uint64 als Datentyp (der 64-Bit-Ganzzahlen ohne Vorzeichen darstellt):
import ( "fmt" ) func main() { m := uint64(39293) s := uint64(75321908) input := []int64{1, 2, 3, 4, 5} output := make([]uint64, len(input)) for i, v := range input { output[i] = (m*uint64(v) + s) % (1 << 64) } fmt.Println(output) // Output: [3 5 4 2 1] }
Dieser Code demonstriert die deterministische Generierung eindeutiger Zahlen für die gegebene Eingabe. Indem Sie unterschiedliche Werte für m und s eingeben, können Sie die Ausgabe an Ihre spezifischen Bedürfnisse anpassen.
Für vorzeichenbehaftete Ganzzahlen wie int64 kann dieselbe Formel angewendet werden, es wird jedoch empfohlen, die Eingabe und Ausgabe zu konvertieren zwischen uint64 und int64 für optimale Leistung.
Das obige ist der detaillierte Inhalt vonWie generiert man eindeutige deterministische ganze Zahlen ohne Duplikate?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!