2010-04-16 3 views
5

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

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

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

import random 

vowels = 'aeiuy' # 0 is confusing 
consonants = 'bcdfghjklmnpqrstvwxz' 
numbers = '' 

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 

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

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

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

Спасибо!

Карл

+5

Вы должны прочитать это, прежде чем начинать думать о генерации случайных слов: http://thedailywtf.com/Articles/The-Automated-Curse-Generator.aspx – Prutswonder

+0

Ха, хороший! Я буду помнить об этом! –

ответ

2

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

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

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

2

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

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