java

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.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

3 días hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

3 días hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

3 días hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

3 días hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

3 días hace

Solución: Apache – Server unable to read htaccess file

Ayer estaba editando unos archivos que son servidos con el servidor Apache y al visitarlos…

3 días hace

Esta web usa cookies.