2011-05-04 11 views

Respuesta

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

Así que si tomo 45 como una mínimo y 'rand.nextInt (50)' devuelve 30, obtengo un valor entre 45 y 50? Uhm ... ok ... –

+29

@La confusión de Daniel es comprensible nible porque el comentario en la respuesta es engañoso.Los 50 en 'rand.nextInt (50)' solo darán el máximo en esta situación. 'rand.nextInt (50)' devolverá un número entero entre 0 (inclusive) y 50 (exclusivamente) (en otras palabras [0-49]). Agregamos 1 para tener [1-50]. Por lo tanto, si toma 45 como mínimo y lo agrega a rand.nextInt (50), tendrá un valor entre 45 y 94 inclusive. –

+4

@The_Rafi Indeed. 'rand.nextInt (1)' solo devolverá 0, no 1 o 0. –

486
int max = 50; 
int min = 1; 

1. Uso de Math.random()

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

Esto le dará valor de 1 a 50 en caso de int o 1.0 (inclusive) a 50,0 (exclusivo) en caso de doble

¿Por qué? método

aleatorio() devuelve un azar número entre 0,0 y 0,9 ..., que multiplica por 50, por lo que el límite superior se convierte en 0,0-49,999 ... cuando se agrega 1, se convierte en 1,0-50,999. .., ahora cuando truncas a int, obtienes 1 a 50. (gracias a @rup en comentarios). leepoint's impresionante reseña en ambos enfoques.

2. Uso de la clase Random en Java.

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

Esto le dará valor de 0 a 49.

Para 1 a 50: rand.nextInt((max - min) + 1) + min;

Source de alguna genialidad de Java aleatoria.

+1

@zengr: por qué 'rand.nextInt (42)' ?? – Favonius

+0

mi mal, no miré el valor 50 publicado. Fijo. – zengr

+0

no se olvide de agregar 1 – JohnnyO