如果我有一个系统,该系统会在100万种可能性的总排列中生成哈希。如果有10%的碰撞机会,我应该担心生成算法运行5次吗?
'23456789abcdefghijkmnopqrstuvwxyz'
,它是33个字符,文件长4个字符,总共33^4 = 1,185,921
个可能性。我不认为生日悖论计算适用。当您拥有500个已知的唯一数时,在1185921中的500个随机数的几率全都不同,而一个新数字的几率也有所不同。
如果您有500个分配的数字并随机生成一个新数字,则发生冲突的几率是500/1185921。使用500个名称,连续发生4次冲突的机会是(500/1185921)4 <10 -13。使用5000个现有文件名,新名称发生冲突的几率是5000/1185921,并且连续4次发生冲突的机率是<10 -9。
我的数学有点生疏,请耐心等待。连续发生x次碰撞的机会很简单:
chance of collision ^ x;
发生碰撞的可能性为:
entries/space (which is 500/1185921 or 0.04%).
您可以在上面看到,条目越多(空间越大,效果越好)。
还请注意,生日悖论可能并不是您想要的。 10%的机会是任何两个条目发生碰撞的机会,而不是下一个条目发生碰撞的机会。