gpt4 book ai didi

java - 导致冲突的位模式的什么属性?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:20:44 25 4
gpt4 key购买 nike

我正在阅读有关 Java 随机化哈希键的方法 here
显然,这个想法是为了确保低位是“随机的”以帮助分发,但我正在尝试更多地了解这一点。
所以如果我们有一个大小为 10 的表,那么数字 0、10、20、30、40 等都落在桶 0 中,数字 1、11、21、31 等落在桶 1 中等(使用模 10)。< br/>因此,更改位模式可以使它们进入不同的存储桶,而不是全部进入存储桶 0。
但是我不清楚的是,是什么属性使低位位影响了这一点,我们需要将它们随机化。所以我们有:

0000 0000 (0)  
0000 1010 (10)
0001 0100 (20)
0001 1110 (30)
0010 1000 (40)

低位有什么规律使它们放在同一个槽位?
也许我对以下内容感到困惑?我的理解是低阶位中的一些规律性导致了冲突,我们尝试随机化位来补偿

最佳答案

一些哈希函数在低位随机化方面做得非常糟糕。

一个经典案例是使用硬件地址作为对象引用(C 中的“指针”)的散列,否则这将是一种合理的方式,可以廉价地获得对象 ID 的唯一编号。如果哈希表的桶计数是质数,这会很好地工作,但对于桶数始终为 2 的幂的哈希实现,所有哈希都可以被 8 整除的事实意味着大多数桶都是空的。

这是一种极端情况,但任何时候要散列的数据不是均匀分布的并且散列函数倾向于保留低位,您会发现桶分配中存在一些偏差。

关于java - 导致冲突的位模式的什么属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30651537/

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