Générer des Nombres Aléatoires en Java : Guide Pratique avec Random et Math.random
Dans ce tutoriel concis, vous apprendrez à produire des valeurs aléatoires en Java en utilisant les deux approches les plus courantes : java.util.Random et Math.random(). Les deux font partie du JDK, mais chacune sert des cas d'utilisation légèrement différents et offre des fonctionnalités uniques.
- java.util.Random – Génère des nombres de tout type primitif et peut être initialisé (seed) pour la reproductibilité.
- Math.random() – Fournit un moyen rapide d'obtenir un double dans l'intervalle [0.0, 1.0) sans créer d'objet.
Génération de Nombres Aléatoires avec java.util.Random
La classe Random peut produire des valeurs int, long, float, double et boolean. Instanciez-la une fois et réutilisez le même objet pour éviter la surcharge de performance.
Voici un exemple complet qui affiche dix entiers aléatoires entre 0 et 99 (inclus). Si vous avez besoin que la borne supérieure soit inclusive, ajoutez un à l'argument.
import java.util.Random;
public class NombresAleatoires {
public static void main(String[] args) {
Random rng = new Random();
for (int i = 0; i < 10; i++) {
int nombreAleatoire = rng.nextInt(100); // 0-99
System.out.println("Nombre Aléatoire : " + nombreAleatoire);
}
}
}
Sortie Typique :
Nombre Aléatoire : 17 Nombre Aléatoire : 57 Nombre Aléatoire : 73 Nombre Aléatoire : 48 Nombre Aléatoire : 68 Nombre Aléatoire : 86 Nombre Aléatoire : 34 Nombre Aléatoire : 97 Nombre Aléatoire : 73 Nombre Aléatoire : 18
Comme Random est thread-safe pour la plupart des usages, vous pouvez partager la même instance entre plusieurs threads si nécessaire. Pour des séquences reproductibles, passez une graine : new Random(42).
Génération de Nombres Aléatoires avec Math.random()
Quand vous n'avez besoin que d'un double rapide dans l'intervalle [0.0, 1.0), Math.random() est pratique. Il délègue en interne à une unique instance Random, donc il est efficace pour de petites charges de travail.
Exemple : générer dix valeurs double.
public class DemoAleatoire {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println(Math.random());
}
}
}
Sortie Typique :
0.46518450373334297 0.14859851177803485 0.5628391820492477 0.6323378498048606 0.1740198445692248 0.9140544122258946 0.9167350036262347 0.49251219841030147 0.7426056725722353
Pour générer des entiers ou des doubles dans une plage différente, combinez Math.random() avec de l'arithmétique. Par exemple, pour obtenir un int aléatoire entre 1 et 10 inclus : (int)(Math.random() * 10) + 1.
Points Clés à Retenir
- Utilisez
java.util.Randomquand vous avez besoin de divers types primitifs ou de séquences déterministes via le seed. - Utilisez
Math.random()pour des doubles rapides et ponctuels dans l'intervalle [0.0, 1.0). - Réutilisez toujours la même instance
Randompour éviter la surcharge de ré-initialisation répétée. - Pour l'aléatoire thread-safe et haute performance dans les environnements concurrents, envisagez
ThreadLocalRandom(Java 7+).
Java
- Déployer des Applications Java EE sur Microsoft Azure : Guide Étape par Étape
- Maîtriser les algorithmes de collection Java : Tri, mélange et plus
- Créer un tableau d'objets en Java : Guide étape par étape
- Méthode Java String length() : Comment obtenir la taille d'une chaîne (Exemple)
- Maîtriser la méthode Java String compareTo() : Syntaxe, cas d'usage et exemples pratiques
- Lecture de Fichiers en Java avec BufferedReader – Guide Pratique avec Exemples
- Convertir un char en String en Java - Exemples pratiques et bonnes pratiques
- Inverser une chaîne en Java par récursivité - Guide étape par étape
- Java 8 Streams : Approche déclarative du traitement de données