Générer des nombres aléatoires dans une plage

JavaJavaBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Java fournit plusieurs méthodes intégrées pour générer des nombres aléatoires dans ses classes Math et Random. Cependant, générer des nombres aléatoires dans une plage peut être difficile. Dans ce laboratoire, vous allez apprendre différentes méthodes pour générer des nombres aléatoires dans une plage, qui incluent :


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/ProgrammingTechniquesGroup(["Programming Techniques"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java/BasicSyntaxGroup -.-> java/output("Output") java/BasicSyntaxGroup -.-> java/math("Math") java/ProgrammingTechniquesGroup -.-> java/method_overloading("Method Overloading") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/FileandIOManagementGroup -.-> java/stream("Stream") java/SystemandDataProcessingGroup -.-> java/math_methods("Math Methods") subgraph Lab Skills java/output -.-> lab-117409{{"Générer des nombres aléatoires dans une plage"}} java/math -.-> lab-117409{{"Générer des nombres aléatoires dans une plage"}} java/method_overloading -.-> lab-117409{{"Générer des nombres aléatoires dans une plage"}} java/classes_objects -.-> lab-117409{{"Générer des nombres aléatoires dans une plage"}} java/stream -.-> lab-117409{{"Générer des nombres aléatoires dans une plage"}} java/math_methods -.-> lab-117409{{"Générer des nombres aléatoires dans une plage"}} end

Générateur de nombres aléatoires en utilisant la classe Math

Nous pouvons utiliser la méthode Math.random() pour générer une valeur de type float comprise entre 0 et 1, ce qui est approprié pour générer des nombres aléatoires. Cependant, il est difficile de générer des valeurs de type float dans une plage particulière.

Dans cette méthode, nous allons produire un nombre aléatoire compris entre min et max (inclus min et exclus max) en utilisant la formule de la méthode Math.random().

Voici l'échantillon de code :

public static int randomNumberGenerator(int min, int max) {
    double r = Math.random();
    int randomNum = (int) (r * (max - min)) + min;
    return randomNum;
}

Pour utiliser cette méthode, appelez la méthode randomNumberGenerator() et passez les arguments d'entiers de plage minimale et maximale ; la méthode renverra un nombre entier aléatoire dans la plage.

Voici le code qui utilise la méthode randomNumberGenerator() pour générer deux nombres aléatoires ; le premier devrait être compris dans la plage de 5 à 105 et le second dans la plage de 2199 à 2200.

int r1 = randomNumberGenerator(5, 105);
int r2 = randomNumberGenerator(2199, 2200);

Pour exécuter cette méthode, exécutez les commandes suivantes dans votre terminal :

$ cd project
$ touch RandomNumbers.java
// coller le code
$ javac RandomNumbers.java
$ java RandomNumbers

Générateur de nombres aléatoires en utilisant la classe Random

Une autre manière de générer des nombres aléatoires dans une plage spécifiée est d'utiliser la méthode nextInt() de la classe Random.

La méthode nextInt() génère une valeur entière dans la plage [0, n).

public static int randomNumberGenerator(int min, int max) {
    Random r = new Random();
    int randomNum = r.nextInt(max - min) + min;
    return randomNum;
}

Cette méthode prend les paramètres min et max et renvoie un entier aléatoire dans la plage spécifiée. Dans cette méthode, nextInt() produit un nombre aléatoire entre 0 et (max-min), puis nous ajoutons la valeur min pour obtenir le nombre aléatoire final.

Voici le code qui utilise la méthode randomNumberGenerator() pour générer deux nombres aléatoires ; le premier devrait être dans la plage de 500 à 2000, et le second devrait être dans la plage de 500 à 501.

int randomNum1 = randomNumberGenerator(500, 2000);
int randomNum2 = randomNumberGenerator(500, 501);

Pour exécuter cette méthode, exécutez les commandes suivantes dans votre terminal :

$ cd project
$ touch RandomNumbers.java
// coller le code
$ javac RandomNumbers.java
$ java RandomNumbers

Utilisation de la méthode ints() de la classe Random

Nous pouvons également utiliser la méthode ints() de la classe Random pour générer un flux d'entiers aléatoires dans une plage.

Voici le code pour générer le flux :

Random r = new Random();
IntStream stream = r.ints(5, 100, 120);

Ici, la méthode ints() prend trois paramètres. Le premier est le paramètre count, qui définit combien d'entiers nous voulons générer, et le paramètre bound, qui définit la plage. Par exemple, dans notre code, le paramètre bound est de 100 à 120. C'est un minimum inclusif (100) et un maximum exclusif (120).

Après avoir créé ce flux, nous pouvons le consommer en utilisant forEach() ou le collecter dans une collection telle qu'une liste ou un tableau.

Voici le code qui utilise la méthode ints() pour générer cinq entiers aléatoires entre 150 et 2000 :

int min = 150; //définition de la plage minimale
int max = 2000; //définition de la plage maximale

Random r = new Random();
IntStream stream = r.ints(5, min, max);//Génération du flux aléatoire
int randomNum = stream.findFirst().getAsInt();//Obtention de la première valeur du flux

System.out.print("Le nombre aléatoire est : " + randomNum);//Affichage du nombre aléatoire

Pour exécuter cette méthode, exécutez les commandes suivantes dans votre terminal :

$ cd project
$ touch RandomNumbers.java
// coller le code
$ javac RandomNumbers.java
$ java RandomNumbers

Résumé

Générer des nombres aléatoires dans une plage spécifique en Java est essentiel pour plusieurs applications. Dans ce laboratoire, vous avez appris plusieurs méthodes de génération de nombres aléatoires dans une plage, telles que l'utilisation de Math.random(), Random.nextInt() et Random.ints(). Chaque méthode a ses avantages et ses inconvénients, et vous devriez choisir celle qui convient le mieux à vos besoins.