0

将随机字符串(最多 1024 个字符,它们可以是 UTF8)散列到从 0 到 100 的整数值的最有效方法是什么?我认为计算 CRC 是最快的,但我不确定。

编辑:这个散列的唯一要求是超级快并且不在会话之间改变(相同的数据=>相同的散列值)

4

2 回答 2

5

尝试以下操作:

"af".sum % 100 # => 99
"ag".sum % 100 # => 0
于 2013-01-05T23:20:08.030 回答
3

使用任何散列函数,将其转换为整数值,然后计算 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

我怀疑有一种方法可以直接从摘要中获取整数,而无需先通过十六进制,但这在我的脑海中。

于 2012-12-01T23:18:50.023 回答