哈希娱乐2-1-常见的哈希函数pdf
哈希游戏作为一种新兴的区块链应用,它巧妙地结合了加密技术与娱乐,为玩家提供了全新的体验。万达哈希平台凭借其独特的彩票玩法和创新的哈希算法,公平公正-方便快捷!万达哈希,哈希游戏平台,哈希娱乐,哈希游戏
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
1、常见的哈希函数哈希函数一般来说,一个好的哈希函数应满足下列两个条件:(1)计算简单(2)冲突少3常见的哈希函数构造方法有:直接哈希函数 数字分析法 平方取中法 折叠法 除留余数法 随机数法4哈希函数哈希地址哈希地址01020322出生年份出生年份0出生人数出生人数5H(key)=key+(-1948)解放后每年出生人数的统计:取关键字本身或关键字的某个线性函数值作为哈希地址,即:H(key)=key或H(key)=a*key+b(a,b为常数)。直接哈希函数:哈希地址哈希地址01020322出生年份出生年份0出生人数出生人数H(key
2、)=key+(-1948)解放后每年出生人数的统计:7n=80,d=8,r=10,s=21,2,3,8位分布不均匀,不能取。可取第4、6两位组成的2位十进制数作为每个数据的哈希地址,则图中列出的关键字的哈希地址分别为:45,72,84,03,28,39,51,65,13设个位数的关键字,由个不同的符号组成,此个符号在关键字各位出现的频率不一定相同,可能在某些位上均匀分布,即每个符号出现的次数都接近于次,而在另一些位上分布不均匀。则选择其中分布均匀的s位作为哈希地址,即H(key)=“key中数字均匀分布的s位”82.数字分析法 n=80,d=8,r=10,s=21,2,3,8位分布不均匀,不能
3、取。可取第4、6两位组成的2位十进制数作为每个数据的哈希地址,则图中列出的关键字的哈希地址分别为:45,72,84,03,28,39,51,65,13数据关键字(关键字)2哈希地址(21729)A010I210J440IPPQQQ9题目:请为BASIC源程序中的标识符建立一个哈希表。假设BASIC语言中允许的标识符为一个字母,或一个字母加一个汉字。取标
4、识符在计算机中的八进制数为它的关键字。解:标识符数量为26+26*10=286需要的存储空间为3位8进制或者9位二进制。表中的关键字没有均匀分布,采用平方后的中间3位均匀发布,可以作为哈希地址取关键字平方后的中间几位作为哈希地址,即哈希函数为:H(key)=“key2的中间几位”,其中,所取的位数由哈希表的大小确定数据关键字(关键字)2哈希地址(21729)A010I210J440IPP
5、04741Q103.平方取中法11以关键字的平方值的中间几位作为存储地址。求“关键字的平方值”的目的是“扩大差别”和“贡献均衡”。即:关键字的各位都在平方值的中间几位有所贡献,Hash值中应该有各位影子。平方取中法思想关键字位数特别多,怎么办?关键字位数较长时,可将关键字分割成位数相等的几部分(最后一部分位数可以不同),取这几部分的叠加和(舍去高位的进位)作为哈希地址。位数由存储地址的位数确定。叠加时有两种方法:移位叠加法,即将每部分的最后一位对齐,然后相加;边界叠加法,即把关键字看作一纸条,从一端向另一端沿边界逐次折叠,然后对齐相加。13dr d2 d1d2rd
6、r+2 dr+1d3rd2r+2 d2r+1+)Sr S2 S1dr d2 d1dr+1d2r-1d2rd3rd2r+2 d2r+1+)Sr S2 S1(a)移位叠加法(b)边界叠加法4.折叠法此方法适合于:关键字的数字位数特别多。取关键字被某个不大于哈希表长度m的数p除后的余数作为哈希地址,即:H(key)=key MOD p(pm)14其中p的选择很重要,如果选得不好会产生很多冲突。比如关键字都是10的倍数,而p=105.除留余数法例 p=21选择一个随机函数,取关键字的随机函数值作为哈希地址,即:H(key)=random(key)其中random为随机函数。156.随机数法实际工作中需根据不同的情况采用不同的哈希函数。通常需要考虑的因素有:计算哈希函数所需时间;关键字的长度;哈希表的大小;关键字的分布情况;记录的查找频率。我有一个电话号码本,怎么根据姓名建立哈希表呢?