这个随机唯一 ID 生成器发生碰撞的可能性有多大?

what are the chances for this random unique Id generator to collide?

我想知道这个独特的id生成器碰撞的机会有多大 https://github.com/vejuhust/blog-code/blob/master/python-short-id-generator/short_id_v5.py

我想为我的 Django 项目生成一个唯一的 url。使用起来安全吗?我是 python 和 Django 的初学者。

这是一个base62编码的8byte随机数。然而,编码并不重要,因为每个随机数的编码方式都不同。因此,它归结为两个 8 字节随机数相同的几率是多少。

我们总共可以生成28×8=18'446'744'073'709'552'000个值有 8 个字节。因此,生成第二个相同值的几率是 1/18'446'744'073'709'552'000 或 0.000000000000000000542%.

如果您生成 k 项,则生成重复项的几率为:

1 - (28×8)!/((28×8-k)!×28×8×k).

随着 k 变大,碰撞的几率增加。如果将该字段标记为唯一,并因此具有重试机制,则它第二次(或第三次)发生碰撞的可能性很小。