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.

Archivo del blog

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.