generar como codigos cadena alfanumericos aleatoria random unique

random - cadena - como generar codigos alfanumericos en excel



Crear una cadena alfanumĂ©rica Ășnica de 10 caracteres (7)

Estoy buscando crear un sistema simple de reserva de corta vida, y me gustaría generar números de confirmación que sean

  • único
  • aspecto aleatorio
  • alfanumérico
  • corto-ish, al menos mucho más corto que las cadenas de 32 caracteres devueltos por sha1

Solo estoy buscando tener ~ 500 reservas, por lo tanto, no me imagino alta probabilidad de colisiones.

Una idea que tuve fue generar un hash sha1 basado en un sello de fecha y hora y un nombre de usuario, y luego truncarlo a sus primeros 10 caracteres. ¿Sería algo así como suficientemente único para procesar ~ 500 reservas?


Esta es una forma de hacerlo en Perl:

sub get_random_name() { my @chars=(''a''..''z'',''A''..''Z''); my $random_string;

foreach (1..22) { # rand @chars will generate a random # number between 0 and scalar @chars $random_string .= $chars[rand @chars]; } return $random_string . "-" . time(); }

No recuerdo cuánto tiempo dura la parte (), por lo que es posible que deba ajustar los números para que se ajusten a su longitud. También puedes quitar esa parte si no la necesitas.


No debe haber diferencia en la aleatoriedad de un bit determinado de un hash SHA-1, por lo que es posible. Otra forma sería doblar el hash dentro de sí mismo usando XOR hasta que tenga 60 bits de datos, luego codificarlo usando Base 64 para obtener un resultado mayoritariamente alfanumérico.

Esto solo es necesario si desea poder generar el mismo Id repetidamente para los mismos datos de entrada. De lo contrario, si una identificación aleatoria que genera una vez, y aferrarse después de eso, use la sugerencia de Anders. Si tienes un conflicto, solo genera otro.


Puede usar cualquier cosa, incluso un generador de números aleatorios simples; sin embargo, debe verificar que el código de reserva no esté presente. Si este es el caso, agregue caracteres (''x'') a la cadena (fecha + usuario) hasta que obtenga un nuevo random / sha1 / etc.

Solo estoy buscando tener ~ 500 reservas, por lo tanto, no me imagino alta probabilidad de colisiones.

Otra idea estúpida: generar 1000 o 2000 números aleatorios únicos con las propiedades deseadas, almacenarlos en algún lugar, y asignarlos a los usuarios a medida que se registran :)


usar un guid? 16 caracteres, aunque si realmente no te importa la colisión, puedes elegir los primeros n caracteres.


Si realmente es solo 500, pregenere 20,000 de ellos, en una tabla, luego obtenga el "próximo sin usar" cuando lo necesite.



Algunos buenos consejos sobre esta pregunta: ¿Cómo creo una cadena alfanumérica aleatoria en C ++?

Evitaría incluir caracteres como "1", "l" y "O", "0" y "5", "S" y "Z", "2" en la cadena, para que sea más fácil para los clientes cuando necesitan leer su código de reserva por teléfono. El algoritmo presentado en ese enlace debería ayudarte a hacer esto.