我想生成一个16位十六进制序列号,例如:F204-8BE2-17A2-CFF3。(这个模式可以给我 16^16 种不同的序列号,但我并不需要它们全部。)
我需要你们都建议一个算法,以随机方式生成这些序列号,并具有特殊特征:每两个序列号之间至少有6个不同的数字。 (=如果你得到了两个最相似的序列号,它们仍然应该在6个索引处有差异。)
我知道一个具有这种特征的好算法需要记住先前生成的序列号,但我不需要那么多。
事实上,我需要一个算法,在选择一对碰撞(少于0.001)的概率最小的情况下进行运算足够了。 PS:
我刚刚试图使用MD5哈希随机创建10K个字符串,结果出现了相似的字符串(相似=超过3个相同的数字)概率为0.00018。
我需要你们都建议一个算法,以随机方式生成这些序列号,并具有特殊特征:每两个序列号之间至少有6个不同的数字。 (=如果你得到了两个最相似的序列号,它们仍然应该在6个索引处有差异。)
我知道一个具有这种特征的好算法需要记住先前生成的序列号,但我不需要那么多。
事实上,我需要一个算法,在选择一对碰撞(少于0.001)的概率最小的情况下进行运算足够了。 PS:
我刚刚试图使用MD5哈希随机创建10K个字符串,结果出现了相似的字符串(相似=超过3个相同的数字)概率为0.00018。
0.001
概率是什么意思?是指所选对碰撞的概率,还是指存在某些对发生碰撞的概率? - Niklas B.