Heim > Backend-Entwicklung > Golang > Wie generiert man deterministisch eindeutige ganze Zahlen aus Eingaben?

Wie generiert man deterministisch eindeutige ganze Zahlen aus Eingaben?

Mary-Kate Olsen
Freigeben: 2024-12-02 12:41:17
Original
933 Leute haben es durchsucht

How to Deterministically Generate Unique Integers from Inputs?

Deterministische Generierung eindeutiger Ganzzahlen aus Eingaben

Bei der Suche nach einer Lösung zur Generierung deterministischer Ganzzahlen, die Duplikate vermeidet, dreht sich die Frage darum, eine Transformation zu finden Methode, die Eingabezahlen eindeutigen Ausgaben innerhalb eines bestimmten Bereichs zuordnet, z. B. einem int64.

Die Antwort liegt in Anwendung modularer Arithmetik, abgeleitet von der affinen Chiffre:

f(P) = (mP + s) mod n
Nach dem Login kopieren

wobei:

  • n = Bereich möglicher Ganzzahlen (z. B. 2^64 für int64)
  • s < n
  • m ist teilerfremd mit n (was bedeutet, dass sie keine anderen gemeinsamen Faktoren als 1 haben)

Durch die Auswahl geeigneter m und s garantiert diese Formel eine eindeutige Zuordnung der Eingabezahlen zu Gibt Ganzzahlen innerhalb des angegebenen Bereichs aus. Zum Beispiel für int64:

m = 39293 (any non-even number)
s = 75321908 (any random number below 2^64)
Nach dem Login kopieren

Mit diesen Werten stellt die Transformationsfunktion:

func transform(p uint64) uint64 {
    return p*m + s
}
Nach dem Login kopieren

sicher, dass jede Eingabe-Ganzzahl eine eindeutige Ausgabe-Ganzzahl erzeugt, wie im folgenden Go-Playground gezeigt Beispiel:

https://go.dev/play/p/EKB6SH3-SGu

Für negative Zahlen gilt die Die Logik bleibt dieselbe. Wir können einfach Ein- und Ausgaben zwischen uint64 und int64 konvertieren, um die eindeutige Zuordnung beizubehalten:

func signedTransform(p int64) int64 {
    return int64(transform(uint64(p)))
}
Nach dem Login kopieren

Dieser Ansatz stellt sicher, dass alle möglichen Ganzzahlen innerhalb eines bestimmten Bereichs deterministisch und ohne Kollisionen auf unterschiedliche Ausgabe-Ganzzahlen abgebildet werden.

Das obige ist der detaillierte Inhalt vonWie generiert man deterministisch eindeutige ganze Zahlen aus Eingaben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage