这是哈希函数吗?Python

weixin_38060626 2019-09-12 11:25:19
我试图在python中实现哈希函数.你会考虑以下真正的哈希函数吗?我有10个桶和1到7的值.它也会计算碰撞量:) import random A=[1,2,3,4,5,6,7] hashed=[] def func(): i=0 count=0 while len(A)>i: m=random.randint(1,10) # 10 buckets if m in hashed: count+=1 hashed.append(m) print "element:",A[i], "hashed to bucket", m i+=1 print "Amount of collisions:", count func() 测试: element: 1 hashed to bucket 3 element: 2 hashed to bucket 2 element: 3 hashed to bucket 10 element: 4 hashed to bucket 8 element: 5 hashed to bucket 3 element: 6 hashed to bucket 10 element: 7 hashed to bucket 4 Amount of collisions: 2 编辑: 我查看了所有注释,并尝试创建另一个哈希函数.这次我使用random来确定要散列的键.这次我只有3个水桶.我将尝试使用介于1和10之间的25个值: import random count=[] list1 = [] # bucket 1 list2 = [] # bucket 2 list3 = [] # bucket 3 the_list = [] the_list.append(list1) the_list.append(list2) the_list.append(list3) # using lists within a list def func(): while True: number=random.randint(1,10) i=random.randint(0,len(the_list)-1) the_list[i].append(number) count.append(number) if len(count)>25: # testing for 25 values break func() print "Bucket 1:", the_list[0] print "Bucket 2:", the_list[1] print "Bucket 3:", the_list[2] 测试: Bucket 1: [5, 9, 8, 10, 3, 10] Bucket 2: [10, 5, 8, 5, 6, 2, 6, 1, 8] Bucket 3: [9, 4, 7, 2, 1, 6, 7, 10, 9, 1, 5]
...全文
34 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38066085 2019-09-12
  • 打赏
  • 举报
回复
不可以.哈希函数必须是确定性的.它不能依赖随机性. A hash procedure must be deterministic—meaning that for a given input value it must always generate the same hash value. In other words, it must be a function of the hashed data, in the mathematical sense of the term. This requirement excludes hash functions that depend on external variable parameters, such as pseudo-random number generators or the time of day. It also excludes functions that depend on the memory address of the object being hashed, because that address may change during execution (as may happen on systems that use certain methods of garbage collection), although sometimes rehashing of the item is possible). 资料来源:Hash function – Determinism(维基百科)

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧