sábado, 4 de septiembre de 2010

Crear un array sin elementos repetidos y aleatoriamente

Hoy vamos a llenar un array con valores aleatorios sin que se repitan.
Esto es muy útil para crear algunos juegos.


public static void main(String [] args)
{
    int array_size= 4;
    int arreglo[][] = new int[array_size][array_size];
    //declaramos el arreglo que nos va a ser de mucha ayuda
    Vector<Integer> v = new Vector<Integer>();
    //La clase random para generar los números aleatorios
    Random random= new Random();
    while(v.size() < 16 )
    {
        //el rango de números generados debe ser igual o mayor al tamaño del arreglo
        //si no queremos que nuestro programa se ejecute por los siglos de los siglos
        int temp = random.nextInt(array_size*array_size);
        //de paso aprovechamos las cualidades del java 1.5 y nos crea el integer Automaticamente
        if( !v.contains(temp))
            v.addElement(temp); //agregando el dato primitivo como si fuera objeto
                                // automaticamente lo agrega como Integer
    }
    //listo ya tenemos nuestros números generados aleatoriamente
    //ahora lo vamos a guardar en el vector bidimensional
    int k=0;
    for(int i=0;i<array_size;i++)
        for(int j=0;j<array_size;j++)
            arreglo[i][j]=v.elementAt(k++).intValue();//niños no lo intentéis con java 1.4
/*
    listo ya tenemos un arreglo bidimensional con valores aleatorios
    imprimimos los valores generados todo dentro del mismo for para
    variar y no tener código tan aburrido
*/
    for(int i=0,j=0;i<16;j=i%4,System.out.print(arreglo[i/4][i%4]+(j==3? "\n":"\t")),i++);
}

2 comentarios: