web-dev-qa-db-fra.com

Générer un nombre aléatoire compris entre 1 et 10 Java

Je souhaite générer un nombre compris entre 1 et 10 en Java.

Voici ce que j'ai essayé:

Random rn = new Random();
int answer = rn.nextInt(10) + 1;

Y a-t-il un moyen de dire ce qu'il faut mettre entre parenthèses () lors de l'appel de la méthode nextInt et ce qu'il faut ajouter?

155
Shania

Comme la documentation , cet appel de méthode renvoie "une valeur int pseudo-aléatoire, uniformément répartie entre 0 (inclus) et la valeur spécifiée (exclusif)". Cela signifie que vous obtiendrez des nombres de 0 à 9 dans votre cas. Donc, vous avez tout fait correctement en ajoutant un à ce nombre.

De manière générale, si vous avez besoin de générer des nombres de min à max (y compris les deux), vous écrivez

random.nextInt(max - min + 1) + min
219
Malcolm

La manière standard de procéder est la suivante:

Fournir:

  • min valeur minimale
  • max Valeur maximale

et obtenez en retour un entier compris entre min et max, inclus.

Random Rand = new Random();

// nextInt as provided by Random is exclusive of the top value so you need to add 1 

int randomNum = Rand.nextInt((max - min) + 1) + min;

Voir le pertinent JavaDoc .

Comme expliqué par Aurund, les objets aléatoires créés peu de temps après l'autre auront tendance à produire une sortie similaire. Il serait donc judicieux de conserver l'objet aléatoire créé sous forme de champ plutôt que dans une méthode.

72
Scary Wombat

Cela fonctionnera pour générer un nombre compris entre 1 et 10. Assurez-vous que vous importez Random en haut de votre code.

import Java.util.Random;

Si vous voulez le tester, essayez quelque chose comme ça.

Random rn = new Random();

for(int i =0; i < 100; i++)
{
    int answer = rn.nextInt(10) + 1;
    System.out.println(answer);
}

De plus, si vous modifiez le nombre entre parenthèses, un nombre aléatoire compris entre 0 et -1 sera créé (à moins que vous n'en ajoutiez un comme vous le feriez, il s'agira de 1 au nombre que vous avez entré).

17
Demosthanes