【发布时间】:2014-09-03 23:13:51
【问题描述】:
我正在研究 C 中的关联数组库(我没有编写)。类似于 C++ 或 Python 字典中的地图。
有一些非标准的散列函数,我不确定它们是否非常好。 (也许最初的开发者只是抛出了一些幻数、异或运算符并希望得到最好的结果)。
我编写了一个测试,该测试测量哈希函数在给定一些样本输入的情况下的执行情况,以测量它如何均匀地将项目分配到固定数量的存储桶中(在本例中为模数组大小)。
这样,如果有足够的输入,就会有一些方法可以衡量哈希函数的执行情况。
对于任何编写关联数组的人来说,这似乎是一个常见问题。
是否有一些约定来衡量哈希函数的性能? (根据分发质量,而不是速度)。
最坏的情况是每个输入的结果都相同,而最好的情况是均匀分布(或尽可能接近)。
注意,我不是在这里寻找加密强度。
【问题讨论】: