¿Hay funcionalidad para generar un carácter aleatorio en Java?

¿Java tiene alguna funcionalidad para generar caracteres aleatorios o cadenas? ¿O debe simplemente elegir un entero aleatorio y convertir el código ascii de ese entero a un personaje?

Hay muchas maneras de hacer esto, pero sí, implica generar un int aleatorio (usando, por ejemplo, java.util.Random.nextInt ) y luego usarlo para asignar un char . Si tienes un alfabeto específico, entonces algo como esto es ingenioso:

  import java.util.Random; //... Random r = new Random(); String alphabet = "123xyz"; for (int i = 0; i < 50; i++) { System.out.println(alphabet.charAt(r.nextInt(alphabet.length()))); } // prints 50 random characters from alphabet 

Tenga en cuenta que java.util.Random es en realidad un generador de números pseudoaleatorio basado en la fórmula de congruencia lineal bastante débil. Usted mencionó la necesidad de la criptografía; es posible que desee investigar el uso de un generador de números pseudoaleatorios criptográficamente más seguro en ese caso (por ejemplo, java.security.SecureRandom ).

Para generar un char aleatorio en az:

 Random r = new Random(); char c = (char)(r.nextInt(26) + 'a'); 

También puede usar RandomStringUtils del proyecto Apache Commons:

 RandomStringUtils.randomAlphabetic(stringLength); 
 private static char rndChar () { int rnd = (int) (Math.random() * 52); // or use Random or whatever char base = (rnd < 26) ? 'A' : 'a'; return (char) (base + rnd % 26); } 

Genera valores en los rangos az, AZ.

En el siguiente valor de 97 ascii de la pequeña “a”.

 public static char randomSeriesForThreeCharacter() { Random r = new Random(); char random_3_Char = (char) (97 + r.nextInt(3)); return random_3_Char; } 

en el número de arriba 3 para a, b, c o d y si quieres que todos los caracteres como a z cambien 3 números a 25.