我受到unique id code的启发,生成一个随机的64位标识符。
我的问题:这对于大约1000万个参赛作品是否足够好?
def self.generateId
(0..15).collect{(rand*16).to_i.to_s(16)}.join
end
答案 0 :(得分:2)
这是经典的生日问题。
使用m=10^7
和n=10^20
(自2^64
〜10^20
起),碰撞概率由下式给出:
p = 1 - exp(-m^2/(2*n))
给出5e-07
我会说没有替换的采样是你最好的选择。
答案 1 :(得分:0)
我会让它长128位,这样你就不用担心10M记录了
答案 2 :(得分:0)
2 ^ 64是关于编辑: 10 ^ 31 10 ^ 21,其大于10 ^ 7(1000万)10 ^ 14倍。因此,仅使用64位几乎是完全安全的。