2011-05-04 5 views

Répondre

395
import java.util.Random; 

Random rand = new Random(); 

int n = rand.nextInt(50) + 1; 
//50 is the maximum and the 1 is our minimum 
+3

Donc si je prends 45 comme un minimum et 'rand.nextInt (50)' renvoie 30, j'obtiens une valeur entre 45 et 50? Uhm ... ok ... –

+29

La confusion de @DanielF est understa ndable parce que le commentaire dans la réponse est trompeur.Le 50 dans 'rand.nextInt (50)' ne donnera que le maximum dans cette situation. 'rand.nextInt (50)' retournera un entier compris entre 0 (inclusivement) et 50 (exclusivement) (en d'autres termes [0-49]). Nous ajoutons 1 pour avoir [1-50]. Donc, si vous en prenez 45 au minimum et que vous l'ajoutez à rand.nextInt (50), vous aurez une valeur comprise entre 45 et 94 inclusivement. –

+4

@The_Rafi En effet. 'rand.nextInt (1)' ne retournera que 0, pas 1 ou 0. –

486
int max = 50; 
int min = 1; 

1. En utilisant Math.random()

double random = Math.random() * 49 + 1; 
or 
int random = (int)(Math.random() * 50 + 1); 

Cela vous donnera une valeur de 1 à 50 en cas d'int ou 1.0 (inclus) à 50,0 (exclusive) en cas de double

Pourquoi?

méthode aléatoire() renvoie un nombre aléatoire entre 0,0 et 0,9 ..., vous multiplier par 50, de sorte que la limite supérieure devient de 0,0 à 49,999 ... quand on ajoute 1, il devient de 1,0 à 50,999. .., maintenant quand vous tronquez à int, vous obtenez 1 à 50. (Merci à @rup dans les commentaires). leepoint's impressionnant sur les deux approches.

2. Utilisation de la classe aléatoire en Java.

Random rand = new Random(); 
int value = rand.nextInt(50); 

Cela donnera la valeur de 0 à 49.

Pour 1 à 50: rand.nextInt((max - min) + 1) + min;

Source de certains Java aléatoire génialité.

+1

@zengr: pourquoi 'rand.nextInt (42)' ?? – Favonius

+0

ma mauvaise, n'a pas regardé la valeur 50 posté. Fixé. – zengr

+0

ne pas oublier d'ajouter 1 – JohnnyO

Questions connexes