gpt4 book ai didi

hash - 生成几个整数的哈希和

转载 作者:行者123 更新时间:2023-12-04 17:06:09 25 4
gpt4 key购买 nike

我面临着有几个整数的问题,我必须使用它们生成一个。例如。

Int 1: 14
Int 2: 4
Int 3: 8
Int 4: 4

Hash Sum: 43

我对值有一些限制,和属性可以有的最大值是30,所有的加起来总是30。而且属性总是正的。

关键是我想为相似的整数生成相同的哈希和,例如,如果我有整数 14、4、10、2,那么我想生成相同的哈希和,在 43 以上的情况下。但当然如果整数非常不同(4、4、2、20),那么我应该有一个不同的哈希和。它还需要快速。

理想情况下,我希望散列和的输出介于 0 和 512 之间,并且应该均匀分布。根据我的限制,我可以有大约 5K 种不同的可能性,所以我想要的是每个桶大约 10 个。

我确信有很多算法可以做到这一点,但我找不到谷歌搜索这个东西的方法。任何人都可以发布一个算法来做到这一点吗?

更多信息

整件事就是这些整数是函数的属性。我想将函数的值存储在一个表中,但我没有足够的内存来存储所有不同的选项。这就是为什么我想在相似的属性之间进行概括。

10, 5, 15 与 5, 10, 15 完全不同的原因是因为如果你在 3d 中想象这两个点是完全不同的点

更多信息 2

一些答案尝试使用散列解决问题。但我不认为这有那么复杂。感谢其中一条评论,我意识到这是一个聚类算法问题。如果我们只有 3 个属性并且我们在 3d 中想象问题,我只需要将空间分成块。

事实上,这可以通过这种类型的规则来解决
if (att[0] < 5 && att[1] < 5 && att[2] < 5 && att[3] < 5)
Block = 21


if ( (5 < att[0] < 10) && (5 < att[1] < 10) && (5 < att[2] < 10) && (5 < att[3] < 10))
Block = 45

问题是我需要一种快速且通用的方法来生成那些我无法写出所有可能性的 if。

最佳答案

简单的解决方案:

将整数转换为以逗号分隔的字符串,并使用常见的散列算法(md5、sha 等)散列结果字符串。

如果你真的想自己动手,我会做这样的事情:

  • 生成大素数P
  • 生成随机数 0 < a[i] < P(对于您拥有的每个维度)

  • 要生成哈希,计算: sum(a[i] * x[i]) mod P

    关于hash - 生成几个整数的哈希和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/539311/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com