Una forma sencilla y rápida de aprender JAVA, observando y deduciendo cómo se comporta el lenguaje a través de ejemplos prácticos.

domingo, 20 de enero de 2013

Generar números aleatorios sin repetición.

En el siguiente ejemplo tenemos una baraja que consta de 10 cartas que vamos a mezclar aleatoriamente para luego mostrarlo en pantalla.


Codigo:

//Números aleatorios sin repetición
package aleatorisinrepeticion;
import java.util.Stack;

public class AleatoriSinRepeticion {
  public static void main(String[] args) {
    int pos;
    int nCartas = 10;
    Stack < Integer > pCartas = new Stack < Integer > ();
    for (int i = 0; i < nCartas ; i++) {
      pos = (int) Math.floor(Math.random() * nCartas );
      while (pCartas.contains(pos)) {
        pos = (int) Math.floor(Math.random() * nCartas );
      }
      pCartas.push(pos);
    }
    System.out.println("Núm. aleatorios sin repetición:");
    System.out.println(pCartas.toString());
  }
}


Resultado:

run:
Núm. aleatorios sin repetición:
[2, 8, 5, 7, 6, 3, 0, 9, 4, 1]
BUILD SUCCESSFUL (total time: 0 seconds)

jueves, 3 de enero de 2013

Pasar vector a Matriz

Codigo:

package vectortaula;

public class VectorTaula {

  public static void main(String[] args) {

    int vDist[] = {774, 647, 192, 754, 515, 578, 861, 947, 253};
    int n= (int)Math.sqrt(vDist.length);
    int taula[][] = new int[n][n];
    int cont = 0;

    for (int x = 0; x < n; x++) {
      for (int y = 0; y < n; y++) {
        taula[y][x] = vDist[cont];
        cont++;
      }
    }

    MostrarTaula(taula, n);

  }

  private static void MostrarTaula(int[][] taula, int n) {
    System.out.println("Matriz:");
    String str = "";
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
        str += taula[j][i] + "\t";
      }
      System.out.println(str);
      str = "";
    }
  }

}


Resultado:

run:
Matriz:
774 647 192
754 515 578
861 947 253
BUILD SUCCESSFUL (total time: 0 seconds)

Pasar vector a Matriz Simétrica.

Se puede utilizar para tablas de distancias entre nodos, donde la distancia entre el nodo A y el B y viceversa son equivalentes.


Codigo:

package taulatriangular1;

public class TaulaTriangular1 {

  public static void main(String[] args) {

    int nNodes = 5;
    int vDist[] = {774, 647, 192, 754, 515, 578, 861, 947, 253, 496};
    int taula[][] = new int[nNodes][nNodes];
    int cont = 0;

    for (int i = 0; i < nNodes; i++) {
      for (int j = 0; j < nNodes; j++) {
        if (j == i) {
          taula[i][j] = 0;
        }
        if (j > i) {
          taula[i][j] = vDist[cont];
          taula[j][i] = taula[i][j];
          cont++;
        }
      } 
    }

    mostrarTaula(taula, nNodes);

  }

  private static void mostrarTaula(int[][] taula, int nNodes) {
    String str = "";
    for (int i = 0; i < nNodes; i++) {
      for (int j = 0; j < nNodes; j++) {
        str += taula[i][j] + "\t";
      }
      System.out.println(str);
      str = "";
    }
  }

}


Resultado:

run:
0    774    647    192    754
774  0      515    578    861
647  515    0      947    253
192  578    947    0      496
754  861    253    496    0
BUILD SUCCESSFUL (total time: 0 seconds)

Con la tecnología de Blogger.