metodo random
holas, quiero saber como puedo generar numeros numeros en un metodo random, pero que ninguno se repita.
yo pongo esto:
for (int i = 0; i < 5; i++) {
numero = (int) (Math.random() * 5);
if ((int) n1 == numero) {
n1 = numero;
continue;
} else {
n1 = numero;
}
System.out.println(numero);
}
esto genera 5 numeros, pero a veces se repiten, o no aparecen 5 sino 3. ayuda plz
yo pongo esto:
for (int i = 0; i < 5; i++) {
numero = (int) (Math.random() * 5);
if ((int) n1 == numero) {
n1 = numero;
continue;
} else {
n1 = numero;
}
System.out.println(numero);
}
esto genera 5 numeros, pero a veces se repiten, o no aparecen 5 sino 3. ayuda plz
mira, he creado una aplicación que te resuelve el problema... creo yo... jeje
a ver, pa empezar no es correcto utilizar una estructura FOR porque solo hará 5 veces el random, y si te sale uno repetido pues ha gastado igualmente esa "vuelta".
después, una tabla de enteros guarda los resultados, asà puedes ir comprobando que los resultados del random no existan ya.
y para finalizar, los resultados van del 1 al 10. Si los quisieras del 0 al 9, ten cuidado porque al crear la tabla, se inicializa todo a 0, y si random==0 te dirÃa que ya existe en la tabla y no lo guardarÃa, o sea que nunca te saldrÃa la pregunta 0. Bueno, para esto hay diferentes soluciones...
Ahà va el código de ejemplo, en la siguiente respuesta, en que puedes ejecutar para que veas si funciona como querÃas:
a ver, pa empezar no es correcto utilizar una estructura FOR porque solo hará 5 veces el random, y si te sale uno repetido pues ha gastado igualmente esa "vuelta".
después, una tabla de enteros guarda los resultados, asà puedes ir comprobando que los resultados del random no existan ya.
y para finalizar, los resultados van del 1 al 10. Si los quisieras del 0 al 9, ten cuidado porque al crear la tabla, se inicializa todo a 0, y si random==0 te dirÃa que ya existe en la tabla y no lo guardarÃa, o sea que nunca te saldrÃa la pregunta 0. Bueno, para esto hay diferentes soluciones...
Ahà va el código de ejemplo, en la siguiente respuesta, en que puedes ejecutar para que veas si funciona como querÃas:
class aleatorios{
public static void main(String []args)throws Exception{
int n;
int numeros_guardados = 0;
int[] numeros = new int[5];
do{
n = (int)(Math.random() * 10) +1; //resultados comprendidos entre 1 y 10
if(!existe(numeros, n))
numeros[numeros_guardados++] = n;
}while(numeros_guardados < numeros.length);
muestra(numeros);
}
public static boolean existe(int[] tabla, int n){
int posicion = 0;
int tamaño = tabla.length;
boolean encontrado = false;
while(posicion < tamaño && !encontrado){
encontrado = tabla[posicion++] == n;
}
return encontrado;
}
public static void muestra(int[] tabla){
for(int i=0; i<tabla.length; i++){
System.out.println(tabla[i]);
}
}
}
public static void main(String []args)throws Exception{
int n;
int numeros_guardados = 0;
int[] numeros = new int[5];
do{
n = (int)(Math.random() * 10) +1; //resultados comprendidos entre 1 y 10
if(!existe(numeros, n))
numeros[numeros_guardados++] = n;
}while(numeros_guardados < numeros.length);
muestra(numeros);
}
public static boolean existe(int[] tabla, int n){
int posicion = 0;
int tamaño = tabla.length;
boolean encontrado = false;
while(posicion < tamaño && !encontrado){
encontrado = tabla[posicion++] == n;
}
return encontrado;
}
public static void muestra(int[] tabla){
for(int i=0; i<tabla.length; i++){
System.out.println(tabla[i]);
}
}
}
oye, gracias, ahora si me saldrá como keria, para q no se repita =). thanx