Генерация легких, чтобы помнить случайных идентификаторов

Поскольку все разработчики делают, мы постоянно имеем дело с некоторыми идентификаторами как часть нашей ежедневной работы. Большую часть времени это об ошибках или запросах в службу поддержки. Наше программное обеспечение, после обнаружения ошибки, создает пакет, которому отформатировали имя от метки времени и номера версии, который является дешевым способом создать довольно уникальные идентификаторы, чтобы не перепутывать пакеты. Пример: "Отчет об ошибках 20101214 174856 6.4b2".

Мой мозг просто не настолько хорош в запоминании чисел. То, что я хотел бы иметь, является простым способом генерировать алфавитно-цифровые идентификаторы, которые легко помнить.

Требуется приблизительно 5 минут, чтобы сделать на скорую руку алгоритм как следующее в Python, который приводит к промежуточным применимым результатам:

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

Это уже довольно хорошо, но я чувствую, что все еще легко забыть, как они записаны точно, так, чтобы, если Вы техническая победа к столу коллег и хотите искать одного из тех, там было все еще потенциальным для трудности.

Я знаю об алгоритмах, которые работают, триграммный анализ текста (скажите питание их целая книга на немецком языке), и это может генерировать строки, которые стиль как немецкие слова и таким образом легче обработать обычно. Это требует большого количества данных, тем не менее, и делает это немного менее подходящим для встраивания в приложение просто с этой целью.

Вы знаете о каких-либо опубликованных алгоритмах, которые решают эту проблему?

Спасибо!

Carl

5
задан Carl Seleborg 16 April 2010 в 12:34
поделиться

2 ответа

Я не уверен, что это отвечает на ваш вопрос, но, возможно, подумайте, сколько уникальных номеров отчетов об ошибках вам нужно.

Просто используя четырехбуквенную буквенно-цифровую клавишу, например «BX-3D», можно получить 36 ^ 4 = 1,7 миллиона отчетов об ошибках.

Редактировать: Я только что видел ваш образец. Возможно, результаты можно было бы значительно улучшить, если бы вы использовали слоги вместо согласных и гласных.

2
ответ дан 15 December 2019 в 00:55
поделиться

Как вы сказали, ваш образец неплох. Но если вам нужны случайные идентификаторы, которые можно легко запомнить, не следует смешивать буквенно-цифровые и числовые символы. Вместо этого вы можете добавить к буквенно-цифровой строке пару цифр.

Кроме того, в вашем примере Вы мудро исключили «o», но забыли о «l», которое можно легко спутать с «1». Я предлагаю вам также удалить букву «l». ; -)

2
ответ дан 15 December 2019 в 00:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: