将随机字符串(最多 1024 个字符,它们可以是 UTF8)散列到从 0 到 100 的整数值的最有效方法是什么?我认为计算 CRC 是最快的,但我不确定。
编辑:这个散列的唯一要求是超级快并且不在会话之间改变(相同的数据=>相同的散列值)
尝试以下操作:
"af".sum % 100 # => 99
"ag".sum % 100 # => 0
使用任何散列函数,将其转换为整数值,然后计算 100 的模数。
使用 MD5 的示例:
require 'digest/md5'
def hash_100(str)
Digest::MD5.hexdigest(str).to_i(16) % 100
end
hash_100('hello') # => 94
hash_100('world') # => 51
我怀疑有一种方法可以直接从摘要中获取整数,而无需先通过十六进制,但这在我的脑海中。