首頁 > 後端開發 > Golang > 如何從輸入數字產生確定性且唯一的整數?

如何從輸入數字產生確定性且唯一的整數?

Barbara Streisand
發布: 2024-11-23 08:38:50
原創
910 人瀏覽過

How to Generate Deterministic and Unique Integers from Input Numbers?

確定性和唯一數字產生

考慮到需要產生唯一映射到每個輸入數字的確定性整數,這似乎是不可能的Задача 。不過,有一個數學公式可以滿足這個要求。

變換公式

變換公式是由模運算推導出來的:

f(P) = (mP + s) mod n
登入後複製

其中:

  • P 是輸入number
  • m 是與n
  • 互質的非偶數
  • s 是小於n
n 的隨機數

n 是要產生的值的範圍(例如,2 ^64 for uint64)

此公式確保每個輸入P 對應到 0範圍內的唯一輸出至n-1。 m 的互質條件可防止 m 和 n 之間的公因數,從而消除週期性模式和衝突。

uint64 的實作範例
var (
    m = uint64(39293)
    s = uint64(75321908)
)

func transform(p uint64) uint64 {
    return p*m + s
}
登入後複製

對於uint64 範圍,下列參數值可以使用:

擴充到

func signedTransform(p int64) int64 {
    return int64(transform(uint64(p)))
}
登入後複製
對於有符號數(int64),可以使用類似的方法。在將輸入和輸出與uint64 相互轉換之後,應用uint64 的原始轉換:

透過利用這種確定性和唯一的數位產生方案,可以將輸入數字映射到唯一的輸出,而無需數組或記憶體密集型排序。

以上是如何從輸入數字產生確定性且唯一的整數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板