碰撞风险最小的数字序列

Series of numbers with minimized risk of collision

我想生成一些数字,它们应该尝试共享尽可能少的公共位模式,以便尽可能少地发生冲突。到目前为止,它的 "simple" 散列具有给定数量的输出位。然而,还有一个'constraint'。我想尽量减少这样的风险,如果你拿一个数字并通过切换少量位来改变它,你最终会得到另一个你刚刚生成的数字。注:我不想它不可能什么的,我想把风险降到最低!

如何计算具有 n 个数字的列表的概率,其中每个数字有 m 位?当然,生成这些数字的合适方法是什么?关于这个有什么好的文章吗?

要准确回答这个问题,您需要说出 "collision" 和 "generate" 的确切含义。如果您只是希望字符串在汉明距离上彼此相距很远,您可能希望制作一组最佳的、确定性的此类字符串。的确,随机字符串很有可能会有这个属性,所以你可以用随机字符串代替。

当你说

Note: I don't want it to be impossible or something, I want to minimize the risk!

这听起来像是一个 XY 问题。如果某些结果是 "bad thing" 那么您为什么希望它成为可能,但概率很低?难道你不希望它完全不发生吗?

简而言之,我认为您应该查找术语 "error correcting code"。任何好的纠错码的码字,具有您喜欢的任何参数,在存在随机噪声的情况下,对于该长度的码字数量,它们的碰撞风险最小,并且它们通常可以很容易地使用矩阵乘法。