【发布时间】:2012-05-23 13:01:15
【问题描述】:
我希望能够创建一个算法来生成一个 6 个字符的确认代码(例如 A1JU2Z),该代码对于给定的(用户、代码)对来说是唯一的。原因是,我想将代码保留为 6 个字符,但使用一组修剪过的字母数字(以避免与 1 和 I 等混淆)仅允许在发生冲突之前约 3 亿个代码。当然,我可能永远不需要 3 亿个代码,但如果我这样做了,回去修复这个问题将是一个巨大的痛苦。
那么有没有办法利用用户......说出他们的用户名,通用唯一代码,这样如果同一个用户想要生成另一个代码,它保证它对他们来说是唯一的? (这当然是假设单个用户不会生成超过 300 个工厂代码)
谢谢!
【问题讨论】:
-
(user, code)对中的 code 来自哪里? -
@Attila - 我的措辞可能很糟糕,但基本上我希望能够使用用户的用户名(例如)+其他一些序列来生成代码。所以全球唯一的(用户名,确认码)对。
-
我认为用户名+确认码总是超过6个字符。
-
我问的原因是,如果您生成一个对给定用户(但不一定是用户之间)唯一的ID,那么 (user, ID) 已经保证在全球范围内是唯一的。或者您希望 ID 在全局唯一的同时还包含用户的 ID?
-
@Attila - 我希望能够为给定用户生成多个 ID,这些 ID 不需要全局唯一,但对于该用户必须是唯一的。我希望能够在数学上做到这一点以避免数据库查找(尽管这听起来可能是不可避免的)。
标签: encoding hash uniqueidentifier