生成易于记忆的随机标识符

时间:2010-04-16 12:08:34

标签: random nlp mnemonics

正如所有开发人员所做的那样,我们会不断处理某种标识符,这是我们日常工作的一部分。大多数时候,它是关于错误或支持票。我们的软件在检测到错误后,会创建一个包含时间戳和版本号格式的包,这是一种创建合理唯一标识符的便宜方式,可避免混淆包。示例:“错误报告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

这已经相当不错了,但是我觉得它们仍然很容易忘记它们的拼写方式,所以如果你走到一个同事的办公桌上,想看看其中一个,那么仍有可能出现困难。< / p>

我知道对文本执行三元分析的算法(比如你用德语为它们提供整本书),并且可以生成外观和感觉像德语单词的字符串,因此通常更容易处理。但是,这需要大量数据,并且仅仅为了这个目的而稍微不适合嵌入应用程序中。

您知道任何解决此问题的已发布算法吗?

谢谢!

卡尔

2 个答案:

答案 0 :(得分:2)

我不确定这会回答您的问题,但可能会考虑您需要多少独特的错误报告编号。

只需使用四字母大写的字母数字键,如“BX-3D”,即可获得36 ^ 4 = 170万个错误报告。

编辑:我刚看到你的样本。如果您使用音节而不是辅音和元音,结果可能会大大改善。

答案 1 :(得分:2)

正如你所说,你的样本非常好。但是,如果您想要可以轻易记住的随机标识符,则不应混用字母数字和数字字符。相反,您可以选择使用几个数字后缀一个字母数字字符串。

另外,在你的样本中你明智地排除了'o',但忘记了'l',你很容易将其与'1'混淆。我建议你删除'l'。 ; - )