Trigonometría, números aleatorios y más con las funciones matemáticas de PHP incorporadas

Las matemáticas básicas se usan mucho durante la programación. Necesitamos comparar, sumar, multiplicar, restar y dividir valores diferentes con frecuencia al escribir código. 

A veces, las matemáticas requeridas en un programa pueden ser más complicadas. Es posible que deba trabajar con funciones logarítmicas, trigonométricas o exponenciales. En este tutorial, discutiré cómo usar cada una de estas funciones en PHP, con ejemplos.

Este tutorial le presentará las funciones matemáticas incorporadas en PHP para realizar cálculos de trigonometría, exponenciación y logaritmo. También veremos el redondeo y la generación de números aleatorios..

Funciones trigonométricas en PHP

Puede calcular el valor de seno, cos y tangente de diferentes ángulos dados en radianes usando pecado ($ ángulo), cos ($ angle), y bronceado ($ ángulo). Todos regresan flotador valores, y la medida del ángulo que se les pasa está en radianes.

Esto significa que cuando usted simplemente calcula bronceado (45), no obtendrá 1 como salida, porque en realidad calculará el valor de tangente en 45 radianes, que es aproximadamente 2,578 grados. Afortunadamente, PHP tiene dos funciones muy útiles para convertir radianes a grados y viceversa. Estas funciones son rad2deg () y deg2rad (). Entonces, si realmente quiere calcular el valor de la tangente de 45 grados, tendrá que escribir tan (deg2rad (45)).

 Es de destacar que no hay una función PHP directa para calcular el valor de cosec (), segundo(), o cuna(). Sin embargo, estos valores son sólo recíprocos de pecado(), cos (), y bronceado(), por lo que todavía puede calcular sus valores indirectamente.

También puede hacer lo inverso y calcular el ángulo en el que un ángulo trigonométrico tiene un valor particular. Estas funciones se llaman como en(), acos (), y un bronceado(). Una cosa que debes recordar es que los valores de pecado y cos nunca pueden ir más allá del rango de -1 a 1 para cualquier ángulo. Esto significa que como en() y acos () solo puede aceptar valores en el rango de -1 a 1 como argumentos válidos. Un valor fuera de este rango le dará NaN.

La trigonometría tiene muchas aplicaciones como determinar la trayectoria de un proyectil o las alturas y distancias de diferentes objetos, por lo que tener acceso a estas funciones es definitivamente útil si está escribiendo un código que simule estas situaciones..

Estas funciones también son muy útiles cuando desea dibujar diferentes elementos utilizando valores radiales y angulares. Digamos que desea dibujar un patrón de círculos alrededor de un círculo más grande a una distancia uniforme. Si ha leído el tutorial de PHP GD Shapes en Envato Tuts +, probablemente recuerde que dibujar cualquier forma requerirá que pase coordenadas en forma de coordenadas x, y, pero dibujar patrones circulares es más fácil con coordenadas polares.

El uso de estas funciones trigonométricas en este caso lo ayudará a dibujar las figuras deseadas usando pecado() y cos () Convertir las coordenadas polares a forma cartesiana. Aquí hay un ejemplo:

La siguiente imagen muestra el resultado final del código PHP anterior..

Funciones exponenciales y logarítmicas

PHP también tiene algunas funciones exponenciales y logarítmicas. los exp ($ valor) la función devolverá la constante mi elevado al poder del flotador $ valor. Del mismo modo, puede calcular el logaritmo de un número dado a cualquier base utilizando el log ($ arg, $ base) función. Si el $ base se omite, el logaritmo se calculará utilizando la base natural mi. Si desea calcular el logaritmo de un número en base 10, simplemente puede utilizar la función log10 ($ arg).

Una función más que podría encontrar útil es pow ($ base, $ exp), que devuelve $ base elevado al poder de $ exp. Algunos de ustedes pueden preferir usar el ** operador. La expresion $ a ** $ b dará el mismo resultado que pow ($ a, $ b). Sin embargo, puede obtener resultados incorrectos en ciertas situaciones con $ a ** $ b. Por ejemplo, -1 ** 0.5 Te regalaré -1, que es incorrecto Calculando la misma expresión usando pow (-1, 0.5) le dará el valor correcto, NaN.

Otras funciones matemáticas útiles

Redondear numeros

También hay muchas otras funciones matemáticas importantes. Puede redondear fracciones o números decimales hasta el entero más cercano usando la ceil (float $ value) función. Esto convertirá tanto 2.1 como 2.9 a 3. De manera similar, puede redondear fracciones o números decimales al entero más cercano usando la piso (flotante $ valor) función. Cambiará tanto 2.1 como 2.9 a 2..

Estas funciones son buenas para redondear fácilmente los resultados de diferentes cálculos. Digamos que necesita saber cuántas personas puede acomodar una sala según su área. Su respuesta final después de la división probablemente será un número decimal, pero no puede dividir a las personas en fracciones, por lo que la respuesta correcta sería el valor mínimo del valor calculado.

A menudo querrá redondear un número hacia arriba o hacia abajo al entero más cercano. Por ejemplo, es posible que desee cambiar 2.1 a 2, pero 2.9 a 3. Esto se puede hacer fácilmente usando la ronda ($ valor, $ precisión, $ modo) función. los $ precision parámetro determina el número de lugares decimales para redondear a. El valor predeterminado de 0 simplemente devolverá números enteros. El tercero $ modo el parámetro se usa para determinar qué sucede si el número que desea redondear se encuentra exactamente en el medio. Puede usarlo para especificar si 3.5 debe cambiarse a 3 o 4.

Mínimo y máximo

PHP también tiene dos funciones llamadas min ($ valores) y max ($ valores) para ayudarlo a determinar los valores más bajos y más altos en un conjunto o conjunto de números. Estas funciones pueden aceptar diferentes tipos de parámetros, como dos matrices y una cadena. Debes echar un vistazo a la documentación para ver cómo se compararán.

División entera

También puede realizar división de enteros en PHP usando el intdiv ($ dividendo, $ divisor) función. En este caso, solo se devuelve la parte integral del cociente después de una división. Del mismo modo, también puede obtener el resto o el módulo después de la división de dos argumentos utilizando el fmod ($ dividendo, $ divisor) función. El valor devuelto siempre será menor que el $ divisor en magnitud.

Hay algunas otras funciones útiles como is_nan ($ valor), is_finite ($ valor) y is_infinite ($ val) que se puede usar para determinar si el valor es un número y, si es un número, si es finito o infinito. Recuerde que PHP considera que cualquier valor que sea demasiado grande para caber en una flotación es infinito. Asi que is_finite () volverá cierto por 100 factorial pero falso por 1000 factorial.

Generando números aleatorios en PHP

Los números aleatorios resultan ser bastante útiles en una serie de situaciones. Puede usarlos para generar datos "aleatorios" para su aplicación o para generar instancias enemigas en juegos, etc. Es muy importante recordar que ninguna de las funciones que analizamos en esta sección genera números aleatorios criptográficamente seguros. Estas funciones solo deben utilizarse en situaciones donde la seguridad no es un problema, como mostrar textos de bienvenida al azar para repetir visitas o generar datos estadísticos aleatorios.

Las funciones rand ($ min, $ max) y mt_rand ($ min, $ max) puede generar enteros aleatorios positivos entre valores dados, incluida la $ min y $ max valor. Cuando las funciones se llaman sin ningún parámetro, generan números aleatorios entre 0 y getrandmax (). Usted puede eco El valor de getrandmax () para ver el número aleatorio máximo posible que estas funciones pueden generar en su plataforma.

La función mt_rand () es 4 veces más rápido que rand () y devuelve falso si $ max es menos que $ min. A partir de PHP 7.1.0, rand () En realidad se ha hecho un alias de mt_rand (). La única diferencia es que rand () todavía no da un error si $ max es menos que $ min para mantener la compatibilidad hacia atrás.

Aquí hay un bucle para generar valores aleatorios entre 0 y 100 un millón de veces. Como puede ver, los valores 0, 50 y 100 se generan aproximadamente 10,000 veces con ligeras fluctuaciones..

Ambas funciones también tienen sus propias funciones de sembradora llamadas srand () y mt_srand () para proporcionar una semilla para los generadores de números aleatorios. Solo debes tener en cuenta que solo llamas srand () y mt_srand () una vez en tu programa Llamándolos antes de cada llamada a rand () y mt_rand () le dará los mismos números "aleatorios" cada vez.

Pensamientos finales

PHP viene con muchas funciones integradas que deben satisfacer todas sus necesidades diarias de computación. Puede utilizar estas funciones para realizar cálculos un poco más complicados, como GCD, LCM y factoriales..

Hay solo un par de cosas que debes recordar al usar estas funciones. Por ejemplo, el valor devuelto por funciones como piso() y hacer techo() es un entero, pero sigue siendo un flotador. De manera similar, todas las funciones trigonométricas esperan que sus ángulos se den en radianes. Obtendrá resultados incorrectos si les pasa un valor de ángulo que desea que se le trate como una medida de grado. Así que asegúrese de verificar el valor de retorno y los argumentos esperados de todas estas funciones en la documentación.