Generar cadena aleatoria en Java

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.

Crear cadena aleatoria 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.

Definiendo el banco de caracteres

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.

Obteniendo carácter aleatorio

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.

Generar cadena aleatoria en Java

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.

Poniendo todo junto

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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *