Foros del Web » Programación » Java »

Rellenar array con numeros aleatorios y sin repetir

Estas en el tema de Rellenar array con numeros aleatorios y sin repetir en el foro de Java en Foros del Web. Por favor, me estoy volviendo loco buscando algun codigo en java que haga lo siguiente: Rellenar un array de 31 elementos con numeros del 1 ...
  #1 (permalink)  
Antiguo 17/06/2007, 12:40
 
Fecha de Ingreso: febrero-2006
Mensajes: 39
Antigüedad: 8 años, 8 meses
Puntos: 1
Rellenar array con numeros aleatorios y sin repetir

Por favor, me estoy volviendo loco buscando algun codigo en java que haga lo siguiente:

Rellenar un array de 31 elementos con numeros del 1 al 31 y que no se repitan...

por favor, no es por meter presion, pero es qeu lo necesito PARA MAÑANA...muchas gracias de antemano para tod@s...
  #2 (permalink)  
Antiguo 17/06/2007, 19:03
 
Fecha de Ingreso: noviembre-2003
Mensajes: 59
Antigüedad: 10 años, 11 meses
Puntos: 0
Re: Rellenar array con numeros aleatorios y sin repetir

Genera numeros random (n) sin repetirse.

Código:
/*
 * GeneraRandom31.java
 * 
 * Created on 17-06-2007, 20:57:49 PM
 * 
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package Prueba;
import java.util.Random;
import java.util.Arrays;

/**
 *
 * @author Picaporte
 */
public class GeneraRandom {
   

    
    public  static void main(String[] args){
         
        int n=31;  //numeros aleatorios
       int k=n;  //auxiliar;
        int[] numeros=new int[n];
        int[] resultado=new int[n];
        Random rnd=new Random();
        int res;
        
        
        //se rellena una matriz ordenada del 1 al 31(1..n)
        for(int i=0;i<n;i++){
            numeros[i]=i+1;
        }
        
        for(int i=0;i<n;i++){
            res=rnd.nextInt(k);            
            resultado[i]=numeros[res];
            numeros[res]=numeros[k-1];
            k--;
            
        }
         //se imprime el resultado;
        System.out.println("El resultado de la matriz es:");
        for(int i=0;i<n;i++){
        System.out.println(resultado[i]);
        }
   }
}
Saludos
  #3 (permalink)  
Antiguo 04/06/2009, 16:08
 
Fecha de Ingreso: junio-2009
Ubicación: Bucaramanga, Santander.
Mensajes: 2
Antigüedad: 5 años, 4 meses
Puntos: 0
Respuesta: Rellenar array con numeros aleatorios y sin repetir

/**
* Retorna un vector de enteros entre a y b (inclusive), a < b.
*/
public static int[] getSecuenciaAleatoria(int a, int b)
{
//El generador de números aleatorios.
java.util.Random rnd = new java.util.Random();

// El tamaño del vector.
int n = b - a + 1;

// Un ArrayList que será llenado ordenadamente con valores de a hasta b
java.util.ArrayList<Integer> v = new java.util.ArrayList<Integer>();
for(int i=0; i < n; ++i)
{
v.add(a+i);
}

//La secuencia a retornar.
int[] s = new int[n];

//Un temporal
int t;

//Se llena la secuencia tomando un valor aleatorio del vector v ordenado.
// Note que t es el índice del valor tomado desde v.
//El valor tomado se elimina luego se asignarselo a la secuencia.
for(int i=0; i < n; i++)
{
t = rnd.nextInt(v.size());
s[i] = v.get(t);
v.remove(t);
}

//Chao, nos vemos.
return s;
}

~~~

Desde main: int[] s = getSecuenciaAleatoria(1,10);
  #4 (permalink)  
Antiguo 05/06/2009, 00:56
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 11 años
Puntos: 51
Respuesta: Rellenar array con numeros aleatorios y sin repetir

Si en vez de buscar tanto por Internet algo que hayan hecho otros le hubieses echado un ojo al API de Collections, habrías acabado mucho antes .

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #5 (permalink)  
Antiguo 14/10/2009, 23:08
 
Fecha de Ingreso: octubre-2009
Mensajes: 3
Antigüedad: 5 años
Puntos: 0
Respuesta: Rellenar array con numeros aleatorios y sin repetir

mmm bueno.. hoy estuve buscando la manera de general 5 numeros aleatorios sin repeticion con numeros entre el 0 al 9.. y bueno.. viendo las respuestas que encontré acá logré adquirir mi respuesta.. metiendo mano en el netbeans...
espero les puesda servir..


import java.util.Random;

public class app {

public static Random rm = new Random();

public static void main(String args[]) {
int t = 0; //temporal o numero aleatorio de seleccion
int n = 10;
int numeros[] = new int[10];
int resutaldo[] = new int[5];
int _t[] = new int[5];
//rellenamos un vector con numeros ordenados del 0..9
for (int i = 0; i < numeros.length; i++) {
numeros[i] = i;
}

for (int i = 0; i < 5; i++) {
t = rm.nextInt(n); //tira valor aleatorio desde 0 ...n
resutaldo[i] = numeros[t];
_t[i]=t;

for (int j = t; j < numeros.length-1; j++) {
numeros[j] = numeros[j + 1]; //corrimiento del vector
}
n--;
}
for (int i = 0; i < resutaldo.length; i++) {
System.out.println(resutaldo[i] +" y t = " +_t[i] );

}
}
}
  #6 (permalink)  
Antiguo 15/10/2009, 02:53
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.743
Antigüedad: 6 años, 9 meses
Puntos: 252
Sonrisa Respuesta: Rellenar array con numeros aleatorios y sin repetir

Hola,

Cita:
Iniciado por getNombre Ver Mensaje
mmm bueno.. hoy estuve buscando la manera de general 5 numeros aleatorios sin repeticion con numeros entre el 0 al 9..
Según lo que indica GreenEyed lo más aconsejable es usar las librerías que tiene incorporadas el lenguaje, lo cual tiene sus ventajas, pero también existe el caso que al usar esas librerías nunca comprendamos como fueron hechas.

Código Java:
Ver original
  1. package org;
  2.  
  3. public class Random1 {
  4.  
  5.     private static final int MAXVAL = 100;
  6.     private Integer[] result;
  7.    
  8.     public static void main(String[] args) {
  9.         new Random1().run();
  10.     }
  11.  
  12.     public void run() {
  13.         java.util.LinkedList<Integer> l = new java.util.LinkedList<Integer>();
  14.         for (int i = 0; i < MAXVAL; l.add(++i));
  15.         java.util.Collections.shuffle(l);
  16.         result = l.toArray(new Integer[0]);
  17.         for (Integer i : result) System.out.println(i);
  18.     }
  19.    
  20. }

Y aunque tu aplicación funciona muy bien, podrías haberla simplificado moviendo solamente el último número, no era necesario que movieras todo el array. También dejo una versión diferente sin Collections en el caso sea útil para alguien mas.

Código Java:
Ver original
  1. package org;
  2.  
  3. public class Random2 {
  4.  
  5.     private static final int MAXVAL = 10;
  6.     private static final java.util.Random r = new java.util.Random();
  7.    
  8.     private Integer[] values = new Integer[MAXVAL];
  9.     private Integer[] result = new Integer[MAXVAL];
  10.    
  11.     public static void main(String[] args) {
  12.         new Random2().run();
  13.     }
  14.  
  15.     public void run() {
  16.         int i = 0, j = 0, k = 0;
  17.         while ((values[i++] = i) < MAXVAL);
  18.         i = MAXVAL - 1;
  19.         while (i >= 0) {
  20.             j = r.nextInt(i + 1);
  21.             k = values[i]; values[i] = values[j]; values[j] = k;
  22.             System.out.println(result[i] = values[i--]);
  23.         }
  24.     }
  25.    
  26. }

Saludos,
  #7 (permalink)  
Antiguo 15/10/2009, 11:09
 
Fecha de Ingreso: octubre-2009
Mensajes: 3
Antigüedad: 5 años
Puntos: 0
Respuesta: Rellenar array con numeros aleatorios y sin repetir

Impresionante :D
muchas gracias,...
y aunq no soy purista.. no uso las librerias porq se trataba de un ejericio para intro a la programacion, y en consecuencia es un poco dificil que un novato como use librerias. Pero para eso estan estos foros.. gracias otra vez.. ! :D
  #8 (permalink)  
Antiguo 20/02/2010, 14:40
 
Fecha de Ingreso: febrero-2010
Mensajes: 3
Antigüedad: 4 años, 8 meses
Puntos: 0
Respuesta: Rellenar array con numeros aleatorios y sin repetir

por favor alguien puede ayudarme a hacer una aplicacion similar con hilos puede ser un programa que genere un vector con numeros aleatorios y luego ordenarlos con burbuja o un progra similar por favor la unica condicion es que use hilos

espero alguien me pueda ayudar es urgente
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 09:49.
SEO by vBSEO 3.3.2