Générer un nombre aléatoire entre deux bornes en java
Les nombres aléatoires sont utilisés dans différents domaines comme la simulation pour simuler un phénomène par exemple la chute d'un corps ou les jeux vidéo comme Sudoku dont la grille doit être différente de la partie précédente ou un tirage au sort, etc.Java possède deux moyens pour générer les nombres aléatoires: La première est la classe java.util.Random et la deuxième est la méthode random(). Dans ce tutoriel, on va voir comment générer des entiers (integer) aléatoires situés dans un intervalle (entre deux bornes) en Java.
La méthode Math.random() en Java
La méthode random() est simple à utiliser, elle se trouve dans la classe java.lang.Math et retourne un double avec un signe positive supérieur à 0.0 et inférieur à 1.0. Le nombre généré est un double.double nb;Exécution:
nb = Math.random();
System.out.println(nb);
0.9610715687122661Pour obtenir des nombres supérieurs à 1, multipliez le résultat par 10,100,1000...100000.
nb=nb*100;
96.10715687122661
La classe java.util.Random
Cette classe est plus puissante parce qu'elle offre une génération de plusieurs types pseudo-aléatoire: entier, float, double, byte, boolean...Générer des nombres entiers entre zéro et n en java
La méthode next(int n) génère un nombre uniformément situé entre 0 et n-1.
Random random = new Random();Le constructeur Random crée un nouveau générateur de nombres. L'exécution de ce code retourne un chiffre entre 0 et 8 choisi par le générateur.
int nb;
nb = random.nextInt(9);
Générer des integer entre deux bornes en java
La borne inférieur sera additionnée avec le résultat:
nb = borne_inférieur + random(borne_superieur-borne_inférieur)
int genererInt(int borneInf, int borneSup){
Random random = new Random();
int nb;
nb = borneInf+random.nextInt(borneSup-borneInf);
return nb;
}
public static void main(String[] args) {
System.out.println("intervalle[10, 20]: "+generer(10,20));
}
Exécution:
intervalle[10, 20]: 15
Générer des integer en utilisant la méthode random.nextBytes()
La méthode nexBytes(bytes[]) retourne un tableau de bytes aléatoire. Le nombre de bits est égale à la taille du tableau passé en argument.byte[] genererBit(int taille){Exécution:
Random random = new Random();
byte[] tbyte = new byte[taille];
random.nextBytes(tbyte);
return tbyte;
}
public static void main(String[] args) {
byte[] tbyte = genererBit(20);
for(byte bit:tbyte)
System.out.print(" "+bit);
}
-8 16 -7 27 54 -44 -75 88 -91 -74 -124 10 -100 101 -96 -41 -101 71 33 74
Booléen
Le booléen a deux valeur: true ou false.boolean genererBool(){
Random random = new Random();
return random.nextBoolean();
}
Générer des nombres Float et double en java
Comme dans la méthode random() de la classe Math, le chiffre est compris entre 0.0 et 1.0.float genererFloat(){Exécution:
Random random = new Random();
return random.nextFloat();
}
double genererDouble(){
Random random = new Random();
return random.nextDouble();
}
public static void main(String[] args) {
System.out.println("float: "+genererDouble());
System.out.println("double: "+genererFloat());
}
double: 0.8538674831662335En java, le double est stocké sur 8 octets et le float sur 4 octets.
float: 0.46791792
Références:
Javadoc: java.until.Random class
Javadoc: Math.random() method
Generating random integers in a range with Java
java.util.Random.nextInt() Method