我需要一个哈希函数来获取一个十进制数字序列并返回一个十进制数作为哈希值。
例如:
>> def my_simple_hash(*args):
return reduce(lambda x1, x2: 2*x1 + x2, args)
>>> my_simple_hash(1,3,4)
14
>>> my_simple_hash(1,4,3)
15
>>> my_simple_hash(4,3,1)
23
我的问题是:
问题2解释:
因为1,3,4有六种不同的组合如下:
1,3,4
1,4,3
3,1,4
3,4,1
4,1,3
4,3,1
相应的输出为[14, 15, 18, 21, 21, 23]
,我希望six
输出的哈希值类似于[1,2,3,4,6]
(小范围)
任何建议将不胜感激。 提前谢谢: - )
答案 0 :(得分:1)
如果您只想散列数字序列,可以
hash
返回args-tuple的hash(对于当前的程序运行)(def my_hash(*args):
return hash(args)%10 # or whatever number you like
是快速的并且对内置类型进行了很好的测试) - 但这仍然是一个很大的号。
要获得较小的值,您可以采用类似
的模数def my_hash(*args):
return sum(args)%10 # or whatever number you like
实际上你也可以使用
sum
在程序运行之间没有变化,但ceil()
根本不会均匀分配结果。
警告:这些不是加密哈希