Heim  >  Artikel  >  Backend-Entwicklung  >  Wie generiert man eindeutige deterministische ganze Zahlen ohne Duplikate?

Wie generiert man eindeutige deterministische ganze Zahlen ohne Duplikate?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-22 06:32:11282Durchsuche

How to Generate Unique Deterministic Integers Without Duplicates?

Deterministische Ganzzahlgenerierung ohne Duplikate

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:

  • P ist die Eingabe Ganzzahl
  • m ist eine teilerfremde Konstante für den gewünschten Bereich (n)
  • s stellt sicher, dass die Ausgabe innerhalb des gewünschten Bereichs (n) liegt

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn