random - songs - rap song names
Generando identificadores aleatorios fáciles de recordar (2)
Como dijiste, tu muestra es bastante buena. Pero si quiere identificadores aleatorios que puedan ser fácilmente recordados, entonces no debe mezclar caracteres alfanuméricos y numéricos. En su lugar, puede optar por postfix una cadena alfanumérica con un par de dígitos.
Además, en su muestra excluyó sabiamente ''o'', pero olvidó la ''l'', que puede confundir fácilmente con ''1''. Sugiero que elimines la ''l'' también. ;-)
Como todos los desarrolladores lo hacen, constantemente tratamos con algún tipo de identificadores como parte de nuestro trabajo diario. La mayoría de las veces, se trata de errores o tickets de soporte. Nuestro software, al detectar un error, crea un paquete que tiene un nombre formateado a partir de una marca de tiempo y un número de versión, que es una forma económica de crear identificadores razonablemente únicos para evitar mezclar paquetes. Ejemplo: " Informe de errores 20101214 174856 6.4b2 ".
Mi cerebro no es tan bueno recordando números. Lo que me gustaría tener es una forma simple de generar identificadores alfanuméricos que sean fáciles de recordar .
Se tarda unos 5 minutos en desarrollar un algoritmo como el siguiente en python, que produce resultados utilizables a medias:
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)
Los resultados se ven así:
re1ean
meseux
le1ayl
kuteef
neluaq
tyliyd
ki5ias
Esto ya es bastante bueno, pero creo que todavía es fácil olvidar cómo se escriben exactamente, de modo que si te acercas al escritorio de un compañero y quieres ver uno de ellos, todavía hay posibilidades de que haya dificultades.
Sé de algoritmos que realizan análisis de trigramas en texto (digamos que les das de comer todo un libro en alemán) y que pueden generar cadenas que se ven y se sienten como palabras alemanas y que, por lo tanto, son más fáciles de manejar en general. Sin embargo, esto requiere una gran cantidad de datos y lo hace un poco menos adecuado para incrustar en una aplicación solo para este propósito.
¿Conoce algún algoritmo publicado que resuelva este problema?
¡Gracias!
Carl
No estoy seguro de que esto responda a su pregunta, pero tal vez piense en cuántos números de informes de errores únicos necesita.
Simplemente usando una clave alfanumérica mayúscula de cuatro letras como "BX-3D", puede tener 36 ^ 4 = 1.7 millones de informes de errores.
Editar: acabo de ver tu muestra. Tal vez los resultados podrían mejorarse considerablemente si usaras sílabas en lugar de consonantes y vocales.