在創建確定性數字產生函數的過程中,我們的目標是建構一個函數,其中每個輸入數字產生唯一對應的沒有重複的數字。
模算術解決方案:
巧妙的解決方案在於模運算,特別是仿射密碼。它採用轉換公式:
f(P) = (mP + s) mod n
其中:
對於uint64 範圍,建議m 使用非偶數值以避免被2 整除。
範例實作:
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中文網其他相關文章!