En este post sobre programación en Java te mostraré cómo generar una string o cadena aleatoria, es decir, tomar caracteres de un banco de caracteres y a partir del mismo generar una cadena con caracteres aleatorios en Java.
El algoritmo es sencillo, simplemente tenemos que obtener un carácter aleatorio de la muestra e ir concatenando a la cadena de destino; lo que podemos hacer obteniendo un índice al azar.
En este caso se debe definir la muestra con los caracteres que se esperan en la cadena final. En mi caso, está definida así:
String banco = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
Puedes agregar más caracteres a tu gusto, en este caso solo tiene las letras del abecedario y números al azar.
Para tomar un carácter aleatorio necesitamos un índice para acceder a la cadena que tiene el banco o muestra. Para ello podemos usar la siguiente función:
public static int numeroAleatorioEnRango(int minimo, int maximo) {
// nextInt regresa en rango pero con límite superior exclusivo, por eso sumamos 1
return ThreadLocalRandom.current().nextInt(minimo, maximo + 1);
}
La forma de uso es que obtendremos un número aleatorio entre 0 y la longitud del banco menos 1.
Finalmente veamos la función a continuación. Esta función recibe la longitud que debe tener la cadena generada.
public static String cadenaAleatoria(int longitud) {
// El banco de caracteres
String banco = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
// La cadena en donde iremos agregando un carácter aleatorio
String cadena = "";
for (int x = 0; x < longitud; x++) {
int indiceAleatorio = numeroAleatorioEnRango(0, banco.length() - 1);
char caracterAleatorio = banco.charAt(indiceAleatorio);
cadena += caracterAleatorio;
}
return cadena;
}
Hacemos un ciclo que se repite N veces en donde N es la longitud de la cadena deseada. En cada paso, obtenemos un índice aleatorio, accedemos al banco con charAt
para sacar un carácter y finalmente lo agregamos a la cadena de destino que regresamos al final.
De este modo tenemos una función en Java que genera una cadena aleatoria de cualquier longitud.
Nota importante: esta función genera una cadena aleatoria, pero no es criptográficamente segura. En pocas palabras, no lo uses para cosas de seguridad. Si quieres algo seguro, puedes echar un ojo a SecureRandom
.
El código completo queda como se ve a continuación:
import java.util.concurrent.ThreadLocalRandom;
public class Main {
// https://parzibyte.me/blog
public static void main(String[] args) {
int longitud = 12;
String cadena = cadenaAleatoria(longitud);
System.out.printf("Cadena aleatoria de %d caracteres: %s\n", longitud, cadena);
}
public static String cadenaAleatoria(int longitud) {
// El banco de caracteres
String banco = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
// La cadena en donde iremos agregando un carácter aleatorio
String cadena = "";
for (int x = 0; x < longitud; x++) {
int indiceAleatorio = numeroAleatorioEnRango(0, banco.length() - 1);
char caracterAleatorio = banco.charAt(indiceAleatorio);
cadena += caracterAleatorio;
}
return cadena;
}
public static int numeroAleatorioEnRango(int minimo, int maximo) {
// nextInt regresa en rango pero con límite superior exclusivo, por eso sumamos 1
return ThreadLocalRandom.current().nextInt(minimo, maximo + 1);
}
}
También puedes leer más sobre programación Java.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.