访谈:哈希函数:正弦函数

age*_*ntx 7 c trigonometry

我被问到这个面试问题.我不确定它的正确答案是什么(以及答案背后的原因):

sin(x)是一个很好的哈希函数吗?

Ale*_*nze 4

如果你的意思是sin(),它不是一个好的哈希函数,因为:

  • 这是完全可以预测的,对于某些人来说,x它并不比它x本身更好。密钥和密钥的哈希值之间不应该存在看似明显的关系。
  • 它不会产生整数值。您不能使用浮点索引对数组进行索引/下标,并且哈希表中必须存在某种数组。
  • 浮点是非常特定于实现的,即使您用 制作哈希函数sin(),它也可能无法在不同的编译器或不同类型的 CPU/计算机上工作。
  • sin()可能比一些更简单的整数算术函数慢得多。