在软件开发领域,生成唯一且可预测的数字可能是一项令人困惑的任务。让我们深入研究确定性数字生成函数,该函数确保没有两个输入产生相同的输出,从而实现高效且可重复的计算。
完成此壮举的公式是模块化算术,常用于密码学和随机数生成:
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中文网其他相关文章!