Comment puis-je générer un nombre entier aléatoire entre min et max en Java?
Quelle méthode retourne un random int entre un min et max? Ou n'a pas une telle méthode existe pas?
Ce que je cherche, c'est quelque chose comme ceci:
NAMEOFMETHOD (min, max)
(où les min et max sont int
s), qui renvoie à quelque chose comme ceci:
8
(au hasard)
Si une telle méthode existe, pourriez-vous s'il vous plaît lien vers la documentation correspondante à votre réponse.
Grâce.
Mise à JOUR
De tenter de mettre en œuvre la solution complète et j'obtiens le message d'erreur suivant:
class TestR
{
public static void main (String[]arg)
{
Random random = new Random() ;
int randomNumber = random.nextInt(5) + 2;
System.out.println (randomNumber) ;
}
}
Je suis encore en train les mêmes erreurs du compilateur:
TestR.java:5: cannot find symbol
symbol : class Random
location: class TestR
Random random = new Random() ;
^
TestR.java:5: cannot find symbol
symbol : class Random
location: class TestR
Random random = new Random() ;
^
TestR.java:6: operator + cannot be applied to Random.nextInt,int
int randomNumber = random.nextInt(5) + 2;
^
TestR.java:6: incompatible types
found : <nulltype>
required: int
int randomNumber = random.nextInt(5) + 2;
^
4 errors
Ce qui ne va pas ici?
- Vous avez oublié de déclarer
random
et attribuer une nouvelle instance dejava.util.Random
- t-il? - pourriez vous m'expliquer comment faire?
- Avez-vous déclarer déclarations d'importation pour java.util.Aléatoire
Vous devez vous connecter pour publier un commentaire.
Construire un objet Aléatoire au démarrage de l'application:
Ensuite utiliser Aléatoire.nextInt(int):
Noter que les deux limites inférieure et supérieure sont inclus.
Random random = new Random();
C'est encore tout code Java. Il n'y a pas moyen de la magie 😉static
variable de la classe ainsi.import java.util.Random;
.Vous pouvez utiliser Aléatoire.nextInt(n). Cela renvoie d'un aléatoire int dans [0,n). Juste à l'aide de max-min+1 au lieu de n et en ajoutant min pour la réponse donnera une valeur dans la plage souhaitée.
Que les solutions ci-dessus ne tiennent pas compte du débordement possible de faire
max-min
quandmin
est négatif, voici une autre solution (similaire à celle de kerouac)cela fonctionne même si vous l'appelez avec:
Avec Java 7 ou au-dessus de vous pourrait utiliser
Javadoc: ThreadLocalRandom.nextInt
À l'aide de l'Aléatoire de la classe est le chemin à parcourir, comme suggéré dans les accepté de répondre, mais ici, c'est moins simple façon correcte de le faire si vous ne voulez pas créer un nouvel objet Aléatoire :
Cela génère un entier aléatoire de taille psize
importer java.util.Aléatoire;