Générer des nombres aléatoires
Random et ThreadLocalRandom
Générer des nombres aléatoires est une leçon Java Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Java Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Java Academy comprend 4 leçons au total.
Générer des nombres aléatoires
L’aléatoire est au cœur des jeux, des simulations et de l’échantillonnage. Java propose Math.random(), la classe de génération aléatoire et ThreadLocalRandom pour le code concurrent.
Bases de Math.random
Math.random() renvoie un double dans l’intervalle [0.0, 1.0) : zéro est inclus, un est exclu.
public class Main {
public static void main(String[] args) {
double r = Math.random();
System.out.println("Value between 0 and 1: " + r);
}
}Mettre Math.random à l’échelle
Multipliez puis convertissez le résultat pour obtenir une plage d’entiers. (int)(Math.random() * 6) produit une valeur comprise entre 0 et 5.
public class Main {
public static void main(String[] args) {
int roll = (int)(Math.random() * 6) + 1;
System.out.println("Dice: " + roll);
}
}La classe de génération aléatoire
La classe java.util.Random est plus flexible. Créez une instance, puis appelez des méthodes comme nextInt, nextDouble et nextBoolean.
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rng = new Random();
System.out.println(rng.nextBoolean());
System.out.println(rng.nextDouble());
}
}nextInt avec une borne
nextInt(bound) renvoie un int de 0 inclus à bound exclu. nextInt(6) produit une valeur comprise entre 0 et 5.
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rng = new Random();
int value = rng.nextInt(100);
System.out.println("0 to 99: " + value);
}
}Initialiser une séquence reproductible
Transmettre une graine au constructeur rend la séquence déterministe : la même graine produit toujours les mêmes nombres. C’est très utile pour les vérifications.
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rng = new Random(42);
System.out.println(rng.nextInt(1000));
System.out.println(rng.nextInt(1000));
}
}Même graine, même séquence
Deux objets de génération aléatoire construits avec la même graine produisent des séquences identiques. C’est utile lorsqu’un bogue doit être reproduit exactement.
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random a = new Random(7);
Random b = new Random(7);
System.out.println(a.nextInt(50) == b.nextInt(50));
}
}ThreadLocalRandom
Dans les programmes multithread, un seul générateur aléatoire partagé devient un goulot d’étranglement. ThreadLocalRandom.current() fournit à chaque thread son propre générateur, sans contention.
import java.util.concurrent.ThreadLocalRandom;
public class Main {
public static void main(String[] args) {
int value = ThreadLocalRandom.current().nextInt(1, 7);
System.out.println("Dice: " + value);
}
}Ne partagez jamais un générateur aléatoire entre les threads
Ne transmettez pas une seule instance de générateur aléatoire à de nombreux threads : cela peut entraîner une mauvaise répartition et de la contention. Préférez ThreadLocalRandom dans le code concurrent.
Doubles et distributions gaussiennes
nextDouble() fournit une valeur dans [0,1), et nextGaussian() renvoie des valeurs issues d’une distribution normale de moyenne 0 et d’écart type 1.
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rng = new Random(1);
System.out.println(rng.nextDouble());
System.out.println(rng.nextGaussian());
}
}Choisir le bon outil
Utilisez Math.random() pour obtenir rapidement un double, le générateur aléatoire lorsque vous voulez des bornes ou une graine, et ThreadLocalRandom dans le code concurrent. Pour un aléatoire lié à la sécurité, utilisez plutôt SecureRandom.
Vérification rapide
Vérifiez votre compréhension de l’aléatoire.
Récapitulatif
Vous avez appris à générer des nombres aléatoires.
Math.random()fournit un double dans [0,1).Random.nextInt(bound)fournit une valeur de 0 à bound-1.- Une graine rend les séquences reproductibles.
ThreadLocalRandomest le choix sûr pour le code concurrent.
Questions Fréquemment Posées
La leçon « Générer des nombres aléatoires » est-elle gratuite ?
Oui — le texte complet de « Générer des nombres aléatoires » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Java Academy, passe à CoddyKit PRO. Le cours Java Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Générer des nombres aléatoires » ?
Random et ThreadLocalRandom Tu pratiques Java Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Java Academy ?
Aucune expérience préalable n'est requise. Java Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Générer des nombres aléatoires » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Java Academy ?
Oui. Chaque leçon Java Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- La classe Math
- Générer des nombres aléatoires
- Plages aléatoires et mélange
- Arrondis et limites mathématiques