決定的数値生成関数を作成する探求において、私たちの目的は、各入力数値が対応する一意の整数を生成する関数を構築することです。重複のない数値。
剰余演算解決策:
独創的な解決策は、モジュラー演算、特にアフィン暗号にあります。これは変換式を使用します:
f(P) = (mP + s) mod n
ここで:
uint64 の範囲では、2 で割り切れないように m に非偶数の値を使用することが推奨されます。
実装例:
import ( "fmt" ) func main() { m := uint64(39293) s := uint64(75321908) transform := func(p uint64) uint64 { return p * m + s } testValues := []uint64{1, 2, 3, 4, 5} for _, v := range testValues { fmt.Printf("%v -> %v\n", v, transform(v)) } }
この関数は、すべての可能な uint64 入力値に対して、生成された変換された値が値は一意です。
符号付き整数の適応:
符号付き整数 (int64) の場合も、アプローチは同様です。 uint64 と int64 の間で入力と出力を変換して、一意のマッピングを維持します。
func signedTransform(p int64) int64 { return int64(transform(uint64(p))) }
この決定論的関数を利用することで、開発者は任意の入力整数から一意で再現可能な数値を生成でき、さまざまなアプリケーションにとって貴重なツールになります。 .
以上が別の整数から一意の決定的な整数を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。