gpt4 book ai didi

hash - 如何从3个不同的整数中创建唯一的整数(1个Oracle Long,1个Date字段,1个Short)

转载 作者:行者123 更新时间:2023-12-04 03:10:12 24 4
gpt4 key购买 nike

事实是,第一个数字已经是ORACLE LONG,
第二个是日期(SQL DATE,无时间戳信息),最后一个是Short值,范围为1000-100'000。
我该如何创建一种哈希值,该哈希值对于每种组合而言都是最佳的?

字符串连接并转换为很长的时间:
例如,我不要这个。

日月

12 1-> 121
1 12-> 121

最佳答案

当您有一些数字值并且需要其中有一个“唯一”(即统计上不可能的重复)值时,通常可以使用以下公式:

h = (a*P1 + b)*P2 + c

其中P1和P2是很好选择的数字(例如,如果您知道'a'始终在1-31范围内,则可以使用P1 = 32),或者,当您对a,b的允许范围一无所知时,最好的方法是将P1和P2设为大质数(它们产生碰撞值的机会最少)。
对于最佳解决方案,数学要比这复杂一些,但是使用质数通常可以得到一个不错的解决方案。

例如,数组(或字符串)的 .hashCode()的Java实现类似于:
h = 0;
for (int i = 0; i < a.length; ++i)
h = h * 31 + a[i];

即使就我个人而言,我也会选择大于31的质数,因为String中的值很容易发生冲突,因为31位的增量可能很常见,例如:
"BB".hashCode() == "Aa".hashCode() == 2122

关于hash - 如何从3个不同的整数中创建唯一的整数(1个Oracle Long,1个Date字段,1个Short),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1358468/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com