gpt4 book ai didi

java - 从 murmur3 Guava 中只获得正多头

转载 作者:行者123 更新时间:2023-11-29 07:46:57 24 4
gpt4 key购买 nike

我正在使用 guava 库中的 java murmur3 来获取表示散列的长值。有没有可能只得到正长数?正确的 ow Guava 返回 +/- 结果,这对我不利..

由于计算框架的限制,我使用 murmur3 将字符串 ID 转换为数字表示形式。我不怕少量的碰撞。但我恐怕只是采取 abs(murmur3Value)。它应该显着提高碰撞的可能性。我说得对吗?

我有 ~ 1*10^8 个唯一 ID,是否可以放弃它们的 hased 值并且不会发生太多冲突。

我在 10^7 值上没有任何冲突,但哈希值是正值和负值,我只想使用正值。

最佳答案

使用 Math.abs 是错误的...因为 Math.abs(Long.MIN_VALUE) == Long.MIN_VALUE。考虑到有简单的选项,它也不必要地慢:

x >>> 1

x & Long.MAX_VALUE

在任何情况下,您都会丢失一位,无论是最高位还是最低位。我想在 Murmur3 的情况下没关系。


关于碰撞,您选择什么操作并不重要 - 您将拥有 2**63,即大约 9e18 不同的哈希值。使用 1e8 输入,这意味着即使有碰撞也非常罕见(我懒得查公式了)。

关于java - 从 murmur3 Guava 中只获得正多头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24943006/

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