lunes, 14 de marzo de 2022

La Clase Math y Random de Java

https://platzi.com/tutoriales/1631-java-basico/9324-la-clase-math-y-random-de-java/

 La Clase Math y Random de Java


La Clase Math y Random de Java

Si bien durante el curso se trataron algunas de las funciones de la Clase Math de Java esta Clase tiene muchas más posibilidades que vale la pena tener en cuenta. Recuerda que si quieres aprender más sobre que es una Clase, para que se usa y cuales son sus aplicaciones puedes tomar el Curso de Programación Orientada a Objetos.

Sin más preámbulo vamos a ver algunas de las posibilidades que la Clase Math pone a nuestra disposición.

Math.abs(-3); // Obtener el valor absoluto

double max = Math.max(3.5, 1.2); // Retorna el valor máximo entre 2 números. En este caso sería 3.5
double main = Math.min(3.5, 1.2); // Retorna el valor mínimo entre 2 números. En este caso sería 1.2

Math.ceil(3.6); // Redondear "hacia arriba" al entero más cercano. En este caso se redondea a 4
Math.floor(3.6); // Redondear "hacia abajo" al entero más cercano. En este caso se redondea a 3
Math.round(4.8); // Redondear al entero más cercano, en este caso 5

Math.exp(1); // Retorna el número de Euler elevado a la potencia de un valor double

Math.log(10); // Retorna el logaritmo natural de un valor double

Math.pow(10, 3); // Permite elevar un número a determinada potencia. El primer parámetro es la base y el segundo es el exponente

Math.sqrt(5); // Permite conocer la raíz cuadrada de determinado número.

Math.toDegrees(1.57); // Permite convertir radianes a grados
Math.toRadians(90.00); // Permite convertir grados en radianes

Math.sin(90); // Seno
Math.cos(90; // Coseno
Math.tan(90); // Tangente       

Estas son algunas de las operaciones que puedes realizar con la Clase Math de Java, si quieres conocer al detalle todas los métodos, contantes y demás que proporciona la Clase Math de Java puedes revisar la documentación. Aunque de antemano te aviso que esta es un tanto extensa y los métodos de de arriba son los que es más usados, si crees que hace falta algún método importante o útil no dudes en dejarlo en los comentarios.

Generar números aleatorios

Otra de las muchas posibilidades que ofrece la Clase Math es la capacidad de generar números aleatorios. Vamos a ver como se puede hacer esto ya que esto es bastante común. Pero antes debes saber que lo que vas a generar va a ser un número pseudo-aleatorio esto se debe a que el número que vas a generar se crea en base a fórmulas matemáticas previamente definidas en el código de Java por lo que es imposible obtener aleatoriedad en el más pleno sentido de la palabra, no obstante aún así este sistema funciona lo suficientemente bien como para que no tengas que preocuparte porque el número que vas a generar no sea 100% aleatorio. Una vez dejados a un lado los tecnicismos vamos al grano.

Usando el siguiente método puedes generar un número aleatorio (pseudo-aleatorio para los puristas 😁) entre 0 y 1 pero eso si, el número generado nunca a a ser 1, pero si puede acercarse a este número.

Math.random();

Ahora bien, lo más común es que tu quieras crear números aleatorios que estén dentro de determinado rango. En el caso que quieras que el número generado este entre 0 y n puedes multiplicar el número que retorne el método random() por el número máximo que quieres en el rango + 1, se que esto suena un poco raro así que te pongo un ejemplo para que esto te queda más claro. Supongamos que quieres generar un número aleatorio que este entre el 0 y el 6. Para ello podríamos usar el siguiente código:

Math.random() * 7;

Como ves para que se pueda abarcar los número del 0 al 6 fue necesario multiplicar 7. Esto se debe a que el resultado de random() es no inclusivo, es decir, no incluye al número por el que se multiplica, por eso es necesario sumarle 1 al seis para que sea posible que se incluya al número 6. Ahora bien el código anterior te genera un número con muchos decimales, esto puede ser bueno o malo dependiendo de los requerimientos del software que estés creando, si lo que quieres es mostrarle ese número a un ser humano lo ideal sería quitar todos esos decimales y mostrar un número entero pero de eso ya se habla en el Curso.

Llegados a este punto también debes saber que existe otra forma de hacer lo anterior y es usando la Clase Math de Java util, en el caso de esta Clase es necesario importarla e instanciarla, si esos términos se te hacen extraños recuerda que en el Curso de Programación Orientada a Objetos aprendes sobre Clases, instancias, etc. Si hiciéramos el ejemplo anterior con la Clase Random este quedaría así:

import java.util.Random; // Esto importa la Clase random de java.util

publicclassMathClassRandom{    
	Random claseRandom = new Random(); // Esto crea una instancia de la Clase Random
    claseRandom.nextInt(7); // Genera un número entre 0 y 7, sin decimales raros ni nada
}

Cómo aclaración adicional debes saber que la Clase Random puede generar números aleatorios (o pseudo-aleatorios para ti querido(a) amigo(a) purista 😁) entre -2^31 y 2^32, te dejo ese dato ahí para que lo tengas en cuenta.

Ahora bien que pasa si quieres generar un número aleatorio en un rango más preciso, que no empiece en 0. En se caso la Clase Random puede ayudarte también. Ilustrémoslo con el siguiente ejemplo, supongamos que quieres generar un número entre 15 y 25, para ello el código sería el siguiente:

import java.util.Random;

publicclassMathClassRandom{
	Random claseRandom = new Random();
    int randomInt = 15 + claseRandom.nextInt(26 - 15); // Aquí nuevamente aumentamos el tope en 1 para que se incluya al 25
}

El código que esta guardado en la variable randomInt parece un poco raro pero lo único que hace es definir los topes sobre los que se va a generar el número aleatorio, puedes ver que en el ejemplo dichos topes son 15 y 26.

Espero que este artículo te haya sido de utilidad, si te gusto no dudes en darle un corazón y si te apasiona este tema de las matemáticas no olvides que en Platzi hay toda una Escuela de Matemáticas donde puedes aprender mucho más e incluso cómo proyecto final puedes crear un Modelo Epidemiológico sobre la propagación SARS-COV-2 en un país donde este tiene o tuvo presencia, ¡Un Modelo Epidemiológico!, cuantas personas que conoces pueden crear algo así, con eso de seguro por fin logras conseguir novio(a), ok no 😥, pero por lo menos vas a poder aprender un montón 😁.

No hay comentarios:

Publicar un comentario