2010-04-16 2 views
5

모든 개발자들이 그러 하듯이, 우리는 일일 작업의 일환으로 일종의 식별자를 끊임없이 다룹니다. 대부분의 경우 버그 또는 지원 티켓입니다. 우리의 소프트웨어는 버그를 발견하면 타임 스탬프와 버전 번호로 이름이 지정된 패키지를 생성합니다. 이는 패키지를 섞지 않도록 합리적으로 고유 한 식별자를 만드는 저렴한 방법입니다. 예 : "버그 보고서 20101214 174856 6.4b2".기억하기 쉬운 랜덤 식별자 생성하기

내 뇌는 숫자 기억에 그렇게 좋지 않습니다. 내가 갖고 싶은데을 기억하기 쉬운 영숫자 식별자를 생성하는 간단한 방법입니다 ().

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 분 소요 좋았지 만 철자가 정확히 어떻게 쓰여 있는지 잊기가 쉽다는 느낌이 들었습니다. 그래서 동료 책상으로 걸어 가서 그 중 하나를보고 싶다면 여전히 어려움이 있습니다.

텍스트에 대한 트라이 그램 분석을 수행하고 (독일어로 된 전체 책을 제공한다고 가정) 독일어 단어처럼 보이고 느껴지고 따라서 일반적으로 다루기가 쉬운 문자열을 생성 할 수있는 알고리즘을 알고 있습니다. 이것은 많은 양의 데이터를 요구하며, 단지이 목적을 위해 애플리케이션에 임베딩하기에는 적합하지 않습니다.

이 문제를 해결하기 위해 게시 된 알고리즘을 알고 계십니까?

감사합니다.

+5

임의의 단어를 생성하기 전에이 내용을 읽어야합니다. http://thedailywtf.com/Articles/The-Automated-Curse-Generator.aspx – Prutswonder

+0

하, 좋은 분! 나는 그것을 명심할 것이다! –

답변

2

질문에 대한 답변이 있는지 모르겠지만, 어쩌면 당신이 필요로 얼마나 많은 고유의 버그 리포트 번호에 대해 생각합니다.

"BX-3D"와 같은 4 자리 대문자 영숫자 키를 사용하면 364 = 170 만 개의 버그 보고서를 가질 수 있습니다.

편집 : 방금 ​​샘플을 보았습니다. 자음과 모음 대신 음절을 사용하면 결과가 크게 향상 될 수 있습니다.

2

당신이 말했듯이, 당신의 샘플은 아주 좋습니다. 그러나 쉽게 기억할 수있는 임의의 식별자를 원하면 영숫자와 숫자를 섞어서는 안됩니다. 대신에 영숫자 문자열에 몇 자리 숫자를 붙이도록 선택할 수 있습니다.

또한 샘플에서 'o'를 현명하게 제외했지만 'l'은 잊어 버리고 쉽게 '1'과 혼동 할 수 있습니다. 나는 너를 '웰'로 지우라고 제안한다. ;-)