在軟體開發領域,產生唯一且可預測的數字可能是一項令人困惑的任務。讓我們深入研究確定性數字生成函數,該函數確保沒有兩個輸入產生相同的輸出,從而實現高效且可重複的計算。
完成此壯舉的公式是模組化算術,常用於密碼學和隨機數生成:
f(P) = (mP + s) mod n
其中:
應用此公式,我們可以產生確定性數字,而不需要詳盡的數組或記憶體限制。例如,使用 uint64 作為資料類型(表示 64 位元無符號整數):
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] }
此程式碼示範了給定輸入的唯一數字的確定性產生。透過為 m 和 s 插入不同的值,您可以根據您的特定需求自訂輸出。
對於有符號整數,例如 int64,可以應用相同的公式,但建議轉換輸入和輸出在 uint64 和 int64 之間以獲得最佳效能。
以上是如何產生唯一的確定性整數而不重複?的詳細內容。更多資訊請關注PHP中文網其他相關文章!