假设我的数据库中有一组用户,它们的 ID 为 GUID。我使用xxhash为每个值生成固定长度的哈希值,这样我就可以继续“分桶”它们,并能够在模函数的帮助下进行随机采样。
也就是说,如果我有一个诸如 的散列367b50760441849e,我希望能够用来hash % 20 == 0随机选择 5% 的人口(因此,20 个“桶”)。这是 Kusto 中hash()使用的带有模参数的方法。
考虑到这一点,应该使用什么方法从哈希计算整数值,以便我可以计算模数?
假设我的数据库中有一组用户,它们的 ID 为 GUID。我使用xxhash为每个值生成固定长度的哈希值,这样我就可以继续“分桶”它们,并能够在模函数的帮助下进行随机采样。
也就是说,如果我有一个诸如 的散列367b50760441849e,我希望能够用来hash % 20 == 0随机选择 5% 的人口(因此,20 个“桶”)。这是 Kusto 中hash()使用的带有模参数的方法。
考虑到这一点,应该使用什么方法从哈希计算整数值,以便我可以计算模数?
任何好的哈希都将是均匀分布的,这意味着您可以在应用模数时假设均匀分布n,只要,其中 M 是您的哈希中的位数,请参见此处。因此,对于 SHA1-32,您最多可以取模。
没有计算整数值的方法;您所拥有的是哈希的十六进制表示,如果您将其作为字符串获取,则只需将其转换为数字类型。XXH32() and XXH64()两者都已经产生了 unsigned int 输出。