与所有开发人员一样,我们在日常工作中不断处理某种标识符。大多数时候,它与错误或支持票有关。我们的软件在检测到错误后,会创建一个包,该包的名称由时间戳和版本号格式化,这是创建合理唯一标识符以避免混淆包的一种廉价方法。例子: ”错误报告 20101214 174856 6.4b2".
我的大脑不太擅长记住数字。我想要的是一种简单的方法生成易于记忆的字母数字标识符.
在 python 中创建如下所示的算法大约需要 5 分钟,该算法会产生一半可用的结果:
import random
vowels = 'aeiuy' # 0 is confusing
consonants = 'bcdfghjklmnpqrstvwxz'
numbers = '0123456789'
random.seed()
for i in range(30):
chars = list()
chars.append(random.choice(consonants))
chars.append(random.choice(vowels))
chars.append(random.choice(consonants + numbers))
chars.append(random.choice(vowels))
chars.append(random.choice(vowels))
chars.append(random.choice(consonants))
print ''.join(chars)
结果如下:
re1ean
meseux
le1ayl
kuteef
neluaq
tyliyd
ki5ias
这已经相当不错了,但我觉得仍然很容易忘记它们的准确拼写,因此,如果您走到同事的办公桌前想要查找其中一个,仍然存在潜在的困难。
我知道有一些算法可以对文本进行三元分析(假设你用德语给他们提供一整本书),并且可以生成看起来和感觉都像德语单词的字符串,因此通常更容易处理。不过,这需要大量数据,并且稍微不太适合为此目的嵌入到应用程序中。
您知道有任何已发布的算法可以解决这个问题吗?
Thanks!
Carl
正如你所说,你的样本非常好。但如果您想要易于记住的随机标识符,那么您不应该混合字母数字和数字字符。相反,您可以选择在字母数字字符串后添加几个数字。
另外,在您的示例中,您明智地排除了“o”,但忘记了“l”,您很容易将其与“1”混淆。我建议您也删除“l”。 ;-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)