Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Ejemplo – Programa – Números aleatorios sin repetición

  • 0 Respuestas
  • 539 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Adalher

  • *
  • Underc0der
  • Mensajes: 36
  • Actividad:
    13.33%
  • Reputación 0
    • Ver Perfil
« en: Abril 11, 2019, 08:04:38 am »
Hola a todos,

elementos usados:
Escáner – Entrada de usuario
Generar Random – Números aleatorios
Exception try-catch
Label-continue
Bucle foreach
BigInteger para números muy grandes
Metodos
Código: Java
  1. public class loteria {
  2.  
  3.     public static void main(String[] args){
  4.      
  5.         int givenValue[] = new int[6];
  6.         int randomValue[] = new int[6];
  7.         int hits = 0;            //para números encontrados
  8.  
  9.         givenValue = determineGivenNumbers();    //Metodo para UserInput
  10.         randomValue = determineRandomNumbers();    //Metodo para generar números aleatorios
  11.         hits = checkForEquality(givenValue, randomValue);    //Comprueba los Arrays en igualdad
  12.  
  13.         printArrays(givenValue, randomValue, hits);        //Da los Arrays y los blancos hallados
  14.         binomialcoeficiente();        //Calcular la probabilidad de 6 blancos de 49
  15.     }
  16.  
  17. /*----------------------------UserInput---------------------------------------*/
  18.     public static int[] determineGivenNumbers(){
  19.      
  20.         int givenValue[] = new int[6];
  21.         Scanner scan = new Scanner(System.in);
  22.         int checkGivNumber = 0;        //Para que no se pueda ingresar números iguales
  23.         boolean numOrLetter = false;//Para que no se pueda ingresar letras
  24.      
  25.         System.out.println("Please enter six numbers 1-49!");
  26.      
  27.         Böö: for(int i=0; i<givenValue.length; i++){
  28.             do{
  29.                 try{
  30.                     numOrLetter = false;
  31.                     checkGivNumber = scan.nextInt();
  32.                 }catch(Exception e){
  33.                     System.err.println("Please enter a valid number! " + e.toString());
  34.                     scan.nextLine();
  35.                     numOrLetter = true;        //Error si se ingresa una letra; preguntar de nuevo
  36.                 }
  37.                 if(checkGivNumber <= 0 || checkGivNumber > 49) System.err.println("Please give a number in the specifield range!");
  38.             }while(checkGivNumber <= 0 || checkGivNumber > 49 || numOrLetter == true);
  39.          
  40.             for(int j=0; j<i; j++){
  41.                 if(givenValue[j] == checkGivNumber){    //Por si el número se ingresó dos veces
  42.                     System.err.println("The entered number is already exists!");
  43.                     System.out.println("Please enter a new number!");
  44.                     i--;    //Entonces cuando el mismo número no sigue iterando el bucle for                    
  45.                 continue Böö;            //Entonces ve hacia Böö, entonces despues de continue no se ejecuta mas nada
  46.                 }
  47.             }
  48.             givenValue[i] = checkGivNumber;
  49.         }
  50.      
  51.         Arrays.sort(givenValue);
  52.      
  53.         return givenValue;
  54.     }
  55. /*----------------------------------------------------------------------------*/
  56.  
  57. /*--------------------------Random Números aleatorios----------------------------*/
  58.     public static int[] determineRandomNumbers(){
  59.      
  60.         int randomValue[] = new int[6];
  61.         Random rNumber = new Random();
  62.         int checkRanNumber = 0;        //Para que no se generen números random iguales
  63.      
  64.         Böö: for(int i=0; i<randomValue.length; i++){
  65.             checkRanNumber = rNumber.nextInt(49)+1;
  66.             for(int j=0; j<i; j++){
  67.                 if(randomValue[j] == checkRanNumber){  
  68.                     i--;
  69.                     continue Böö;                      
  70.                 }
  71.             }
  72.             randomValue[i] = checkRanNumber;
  73.         }
  74.      
  75.         Arrays.sort(randomValue);
  76.      
  77.         return randomValue;
  78.     }
  79. /*----------------------------------------------------------------------------*/
  80.  
  81. /*------------------------Comprobar Arrays en igualdad------------------------*/
  82.     public static int checkForEquality(int givenValue[], int randomValue[]){
  83.         int hits = 0;
  84.         //Comprobar en Array cuantos números son iguales
  85.         for(int j=0; j<randomValue.length; j++){
  86.             for(int i=0; i<givenValue.length; i++){
  87.                 if(givenValue[i] == randomValue[j]){
  88.                     hits++;
  89.                 }
  90.             }  
  91.         }
  92.         return hits;
  93.     }
  94.  
  95. /*----------------------------------------------------------------------------*/
  96.  
  97. /*-----------------Dar los Arrays y los blancos hallados -------------------*/
  98.     public static void printArrays(int givenValue[], int randomValue[], int hits){
  99.         for(int i : givenValue){
  100.             System.out.print(i + "\t");
  101.         }
  102.         System.out.println();
  103.         for(int i : randomValue){
  104.             System.out.print(i + "\t");
  105.         }
  106.         System.out.println("You have " + hits + " hits!");
  107.     }
  108. /*----------------------------------------------------------------------------*/
  109.  
  110. /*-----------Calcular la probabilidad de 6 de 49 blancos ------------*/
  111.     public static void binomialcoeficiente(){
  112.      
  113.         BigInteger result = BigInteger.ONE;
  114.         int n = 49;
  115.         int k = 6;
  116.      
  117.         result = faculty(n).divide(faculty(k).multiply((faculty(n-k))));
  118.         System.out.println("The propability for six correct hits are 1 : " + result);
  119.         double d1 = result.doubleValue();    //Convertir el valor BigIntegerden en double
  120.         System.out.println(1/d1 + " %");    //Para que pueda ser especificado en porción %
  121.     }
  122.  
  123.     //Al mismo tiempo los objetos BigInteger se harán tan grandes,
  124.     //como los respectivos resultados necesitan espacio
  125.     public static BigInteger faculty(int number){
  126.         if(number <= 1) return BigInteger.ONE;
  127.         return BigInteger.valueOf(number).multiply(faculty(number-1));
  128.         //BigInteger.valueOf(long val) produce un BigInteger que acepta el valor val
  129.         //Con .multiply se hace this * multiply(número)
  130.     }
  131. }
  132.  

Saludos

 

¿Te gustó el post? COMPARTILO!



[Java] La suma de los números primos

Iniciado por hackmin

Respuestas: 1
Vistas: 3027
Último mensaje Febrero 23, 2015, 01:34:24 pm
por mrobles
[Codigo Basico] Mayor de 3 numeros

Iniciado por Only

Respuestas: 1
Vistas: 1937
Último mensaje Noviembre 06, 2011, 07:47:54 am
por sisvot1
Buscando los números primos, en Java

Iniciado por Yavi

Respuestas: 4
Vistas: 1952
Último mensaje Junio 10, 2015, 05:12:26 pm
por Yavi
Conversor de números decimales a binario

Iniciado por darkbouser

Respuestas: 3
Vistas: 2221
Último mensaje Febrero 09, 2015, 03:31:16 pm
por Hu3c0
Ejercicio de Java - Números primos

Iniciado por SiriusBl@ck

Respuestas: 3
Vistas: 2094
Último mensaje Diciembre 03, 2018, 10:29:40 pm
por tr0n