Comment générer des caractères aléatoires en java

La génération des caractères aléatoires en Java n'existe pas, mais il existe plusieurs façons pour réaliser ça. Il s'agit de générer un nombre aléatoire en utilisant java.util.Random.nextInt() puis on convertie l'entier vers un caractère selon son code ASCII.

Générer un caractère entre a-z

Le code ASCII du premier caractère alphabétique minuscule est 65 (a) et le dernier est 97+26=122 (z). Le nombre généré se situe dans l'intervalle [97, 122] ou dans l'intervalle[0,26] + 97.

Random rand = new Random();
char c = (char)(rand.nextInt(26) + 97);
System.out.println(c);
On peut remplacer le code ASCII 97 avec le 'a':
(char)(rand.nextInt(26) + 'a');

Générer une chaîne de caractères

Pour obtenir n caractères, il faut entourer le code précédent d'une boucle for.
Random rand = new Random();
String str="";
for(int i = 0 ; i < 20 ; i++){
char c = (char)(rand.nextInt(26) + 97);
str += c;
System.out.print(c+" ");
}
f s e u k t m d a e b i m u y a y u s n 

Générer des alpha-numérique à partir d'un ensemble

Dans cet exemple, nous allons générer des caractères alpha-numérique à partir d'un ensemble de caractères définis. Procédons de la façon suivante:
  • Créer un String avec l'ensemble que vous voulez
  • Récupérer la longueur de la chaîne
  • Appeller rand.nextInt qui retourne la position k entre 0 et longueur-1
  • alphabet.charAt(k) est le caractère aléatoire de l'alphabet
Random rand = new Random();
String alphabet = "abcd1235";
int longueur = alphabet.lentgh();
for(int i = 0; i < 30; i++) {
int k = rand.nextInt(longueur);
System.out.print(alphabet.charAt(k)+" ");
}
b 1 3 1 d b b 2 5 5 b a c 5 1 2 b 5 2 c b a 3 3 5 3 d b c 1