Guest User

Untitled

a guest
May 22nd, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.75 KB | None | 0 0
  1. package ejerciciosCasa;
  2.  
  3. /**
  4.  *
  5.  * @author Victor
  6.  *
  7.  */
  8.  
  9. public class AleatorioRango {
  10.  
  11.     public int first = 0;
  12.     public int last = 0;
  13.     private int[] randoms;
  14.    
  15.    
  16.     /**
  17.      * Constructor de la clase. Definirá la primera y última posición del rango, y con estos datos crea el vector de randoms y lo iniciliza a -1
  18.      * Comprobará que la primera posición del rango sea mayor o igual a 0 y que la última posición sea mayor que la primera
  19.      * @param first int mayor o igual a 0 que indica la primera posición del rango
  20.      * @param last int mayor que first que indica la última posición del rango
  21.      */
  22.     AleatorioRango(int first, int last) {
  23.         if (first >= 0 && last > first) {
  24.             this.first = first;
  25.             this.last = last;
  26.             randoms = new int[(last - first) + 1];
  27.             for (int cont = 0; cont < randoms.length; cont++)
  28.                 randoms[cont] = -1;
  29.         }
  30.     }
  31.    
  32.    
  33.    
  34.     /**
  35.      * Método get que devuelve la primera posición del rango 
  36.      * @return una variable de tipo int con la primera posición del rango
  37.      */
  38.     public int getFirst() {
  39.         return first;
  40.     }
  41.    
  42.    
  43.    
  44.     /**
  45.      * Método get que devuelve la última posición del rango 
  46.      * @return una variable de tipo int con la última posición del rango
  47.      */
  48.     public int getLast() {
  49.         return last;
  50.     }
  51.    
  52.     /**
  53.      * Redefinimos el método toString de la superclase Object para que devuelva como información el rango
  54.      */
  55.     public String toString() {
  56.         return ("Devuelvo aleatorios entre " + first + " y " + last);
  57.     }
  58.    
  59.    
  60.    
  61.    
  62.     /**
  63.      * Redefinimos el método equals de la superclase Objetct para que devuelva true si los dos objetos tienen el mismo rango
  64.      */
  65.     public boolean equals(Object c) {
  66.         AleatorioRango al = (AleatorioRango) c;
  67.        
  68.         if (al.getFirst() == first && al.getLast() == last)
  69.             return true;
  70.         else
  71.             return false;
  72.     }
  73.    
  74.    
  75.    
  76.     /**
  77.      * Devuelve un número aleatorio comprendido entre first - last ambos inclusive
  78.      * @return Devuelve un número aleatorio
  79.      */
  80.     public int aleatorioSimple() {
  81.         return (int) (Math.random() * (last - first + 1) + first);
  82.     }
  83.    
  84.    
  85.    
  86.     /**
  87.      * Devuelve un número aleatorio diferente cada vez, hasta completar el rango que se indicó. Una vez devuelto todos los aleatorios posibles devolverá -1
  88.      * @return variable tipo entero temp que contendrá un número negativo o -1 si ya han salido todos los aleatorios posibles
  89.      */
  90.     public int aleatorioSinRepetir() {
  91.         int temp = 0;
  92.        
  93.         while (aleatorioVacio()) {
  94.             temp = aleatorioSimple();
  95.             if (!buscaTemp(temp))
  96.                 return temp;
  97.         }
  98.        
  99.        
  100.         return -1;
  101.     }
  102.    
  103.    
  104.    
  105.     /**
  106.      * Recorre el vector randoms en busca del entero temp si lo encuentra devuelve true sino devuelve false y mete el valor de temp en la primera posición del
  107.      * vector que esté vacía es decir con -1
  108.      * @param temp  variable de tipo entero donde se almacena el aleatorio generado por el método aleatorioSimple()
  109.      * @return
  110.      */
  111.     private boolean buscaTemp(int temp) {
  112.         boolean encontrado = false;
  113.         boolean puesto = false;
  114.         int cont = 0;
  115.        
  116.         while (!encontrado && cont < randoms.length) {
  117.             if (randoms[cont] == temp)
  118.                 encontrado = true;
  119.             cont++;
  120.         }
  121.         cont = 0;
  122.         if (!encontrado) {
  123.             while (cont < randoms.length && !puesto) {
  124.                 if (randoms[cont] == -1) {
  125.                     randoms[cont] = temp;
  126.                     puesto = true;
  127.                 }
  128.                 cont++;
  129.             }
  130.         }
  131.        
  132.         return encontrado;
  133.     }
  134.    
  135.    
  136.    
  137.     /** Recorre el vector randoms en busca de -1 lo que significaría que aún tiene espacios libres
  138.      *
  139.      * @return true si en el vector aún quedan -1 lo que significaría que aún faltan aleatorios por salir.
  140.      */
  141.     private boolean aleatorioVacio() {
  142.         boolean falta = false;
  143.         int cont = 0;
  144.        
  145.         while (cont < randoms.length && !falta) {
  146.             if (randoms[cont] == -1)
  147.                 falta = true;
  148.             cont++;
  149.         }
  150.        
  151.     return falta;
  152.     }
  153.    
  154. }
Add Comment
Please, Sign In to add comment