您的位置:首页 > 其它

【笔记】关于构造一个有效的hash函数

2015-10-04 17:57 267 查看
如果采用:

hashresult=(random1*key+random2)mod B

的形式的话,B尽量是一个质数。因为如果B和大部分(random1*key+random2)都具有公因子,将导致hash不均匀。B为(random1*key+random2)的因子这种情况也需要考虑,但是使得B为质数减少了结果不随机的情况。

B的值为小于桶数目的最大质数

例如需要将行排列重新转换时,“行数为质数时才会发生真正的转换”,这时尝试取小于等于行数的质数。必须含有random1和random2。也可以直接mod行数。

可以转化数字的排列,如123改为312来进行哈希,或者寻找key的规律。哈希时是否使用随机数得视情况而定,但B最好一定是质数。

将字符转换为数字:转为ASCII或Unicode码。如果B较大,则可以将字符串拆分为多个组,每个组包含多个字符,一组字符连在一起看成一个整数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: