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.
El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…
Esta web usa cookies.