Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Java (http://www.forosdelweb.com/f45/)
-   -   Rellenar array con numeros aleatorios y sin repetir (http://www.forosdelweb.com/f45/rellenar-array-con-numeros-aleatorios-sin-repetir-498606/)

plopez7 17/06/2007 12:40

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...

picaporte 17/06/2007 19:03

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

lezambranof 04/06/2009 16:08

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);

GreenEyed 05/06/2009 00:56

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!

getNombre 14/10/2009 23:08

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] );

}
}
}

HackmanC 15/10/2009 02:53

Respuesta: Rellenar array con numeros aleatorios y sin repetir
 
Hola,

Cita:

Iniciado por getNombre (Mensaje 3124171)
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,

getNombre 15/10/2009 11:09

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

Diane 20/02/2010 15:40

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
:stress::stress:
espero alguien me pueda ayudar es urgente


La zona horaria es GMT -6. Ahora son las 19:01.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.