Génération de nombres aléatoires dans une plage en Java

1. Vue d'ensemble

Dans ce didacticiel, nous explorerons différentes façons de générer des nombres aléatoires dans une plage.

2. Génération de nombres aléatoires dans une plage

2.1. Math.random

Le Math.random donne une valeur double aléatoire qui est supérieure ou égale à 0,0 et inférieure à 1,0.

Utilisons la méthode Math.random pour générer un nombre aléatoire dans une plage donnée:

public int getRandomNumber(int min, int max) { return (int) ((Math.random() * (max - min)) + min); }

Pourquoi ça marche? Eh bien, regardons ce qui se passe lorsque Math.random renvoie 0.0, c'est la sortie la plus basse possible:

0.0 * (max - min) + min => min

Ainsi, le nombre le plus bas que nous pouvons obtenir est min.

Si Math.random renvoie 1.0, c'est la sortie la plus élevée possible, alors nous obtenons:

1.0 * (max - min) + min => max - min + min => max

Donc, le nombre le plus élevé que nous pouvons obtenir est max.

Voyons ce même modèle répété avec Random # nextInt dans la section suivante.

2.2. java.util.Random.nextInt

Une instance de java.util.Random peut également être utilisée pour faire de même.

Utilisons la méthode java.util.Random.nextInt pour obtenir un nombre aléatoire:

public int getRandomNumberUsingNextInt(int min, int max) { Random random = new Random(); return random.nextInt(max - min) + min; }

Le paramètre min (l'origine) est inclusif, tandis que le max , la borne, est exclusif

2.3. java.util.Random.ints

La méthode java.util.Random.ints renvoie un IntStream d'entiers aléatoires.

Ainsi, nous pouvons utiliser la méthode java.util.Random.ints et renvoyer un nombre aléatoire:

public int getRandomNumberUsingInts(int min, int max) { Random random = new Random(); return random.ints(min, max) .findFirst() .getAsInt(); }

Ici aussi, l'origine spécifiée min est inclusive et max est exclusive.

3. Conclusion

Dans cet article, nous avons vu d'autres façons de générer des nombres aléatoires dans une plage.

Des extraits de code, comme toujours, peuvent être trouvés sur GitHub.