确定性和唯一数字生成
考虑到需要生成唯一映射到每个输入数字的确定性整数,这似乎是不可能的Задача 。不过,有一个数学公式可以满足这个要求。
变换公式
变换公式是由模运算推导出来的:
f(P) = (mP + s) mod n
其中:
此公式确保每个输入 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 范围,以下参数值可以使用:
扩展至int64func signedTransform(p int64) int64 { return int64(transform(uint64(p))) }对于有符号数 (int64),可以使用类似的方法。在将输入和输出与 uint64 相互转换之后,应用 uint64 的原始转换:通过利用这种确定性和唯一的数字生成方案,可以将输入数字映射到唯一的输出,而无需数组或内存密集型排序。
以上是如何从输入数字生成确定性且唯一的整数?的详细内容。更多信息请关注PHP中文网其他相关文章!