簡體   English   中英

如何在 python 中生成像 imgur 這樣的簡短唯一 ID?

[英]how to generate a short unique id like imgur in python?

什么算法用於生成短唯一ID? 例如 1000 萬個 7 個字符的 id 沒有沖突。 許多網站,如“9gag.com”、ifunny.co、bitly.com 等使用統一資源定位器的短 id 如何生成這樣的 id 幾乎沒有沖突。

您可以在 python (>= 3.6) 中嘗試secrets模塊

import secrets
secrets.token_hex(nbytes=8)
secrets.token_urlsafe(nbytes=8)
...

我也做了測試,我沒有發現每幾百萬個生成的令牌有任何碰撞(但不保證沒有碰撞)。

def test_uniqueness(num_iter, fn, fn_kwargs):
     """
     would output list of tokens that collide,
     or empty list if no collision 
     """
     collisions = {}
     out = []
     for idx in range(num_iter):
         uid = fn(**fn_kwargs)
         if collisions.get(uid, None):
             out.append(uid)
         else:
             collisions[uid] = True
     return out

test_uniqueness(1000000, secrets.token_urlsafe, {'nbytes':8})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM