Trigonométrie, nombres aléatoires et plus encore avec fonctions mathématiques intégrées de PHP

Les mathématiques de base sont beaucoup utilisées lors de la programmation. Nous devons fréquemment comparer, additionner, multiplier, soustraire et diviser différentes valeurs lors de l'écriture de code. 

Parfois, les calculs nécessaires dans un programme peuvent être plus complexes. Vous devrez peut-être utiliser des fonctions logarithmiques, trigonométriques ou exponentielles. Dans ce tutoriel, je vais expliquer comment utiliser chacune de ces fonctions en PHP, avec des exemples..

Ce tutoriel vous présentera les fonctions mathématiques intégrées à PHP pour effectuer des calculs de trigonométrie, d’exponentiation et de logarithme. Nous examinerons également l'arrondissement et la génération de nombres aléatoires.

Fonctions trigonométriques en PHP

Vous pouvez calculer la valeur des sinus, des cos et des tangentes d’angles différents en radians à l’aide de péché ($ angle), cos ($ angle), et bronzage ($ angle). Ils reviennent tous flotte les valeurs, et la mesure d'angle qui leur est passée est en radians.

Cela signifie que lorsque vous calculez simplement bronzage (45), vous n'obtiendrez pas 1 en sortie, car vous calculerez réellement la valeur de la tangente à 45 radians, ce qui correspond à environ 2 578 degrés. Heureusement, PHP dispose de deux fonctions très utiles pour la conversion de radians en degrés et vice versa. Ces fonctions sont rad2deg () et deg2rad (). Donc, si vous voulez réellement calculer la valeur de la tangente de 45 degrés, vous devrez écrire bronzage (deg2rad (45)).

 Il est à noter qu’il n’existe pas de fonction PHP directe permettant de calculer la valeur de cosec (), seconde(), ou lit bébé. Cependant, ces valeurs ne sont que des inverses de péché(), cos (), et bronzer(), de sorte que vous pouvez toujours calculer leurs valeurs indirectement.

Vous pouvez également faire l'inverse et calculer l'angle auquel un angle trigonométrique a une valeur particulière. Ces fonctions s'appellent un péché(), acos (), et un bronzage(). Une chose à ne pas oublier est que les valeurs de sin et de cos ne peuvent jamais aller au-delà de la plage de -1 à 1 pour tous les angles. Cela signifie que un péché() et acos () ne peut accepter que les valeurs comprises entre -1 et 1 comme arguments valides. Une valeur en dehors de cette plage vous donnera NaN.

La trigonométrie a de nombreuses applications telles que la détermination de la trajectoire d'un projectile ou des hauteurs et des distances de différents objets. Il est donc utile d'avoir accès à ces fonctions si vous écrivez un code simulant ces situations..

Ces fonctions sont également très utiles lorsque vous souhaitez dessiner différents éléments à l'aide de valeurs radiales et angulaires. Supposons que vous souhaitiez dessiner un motif de cercles autour d'un cercle plus grand à une distance uniforme. Si vous avez lu le didacticiel PHP GD Shapes sur Envato Tuts +, vous vous souviendrez probablement que pour dessiner des formes, vous devrez passer des coordonnées sous la forme de coordonnées x, y, mais dessiner des motifs circulaires est plus facile avec les coordonnées polaires..

L'utilisation de ces fonctions trigonométriques dans ce cas vous aidera à dessiner les chiffres souhaités à l'aide de péché() et cos () convertir les coordonnées polaires en forme cartésienne. Voici un exemple:

L'image suivante montre le résultat final du code PHP ci-dessus.

Fonctions exponentielles et logarithmiques

PHP a aussi des fonctions exponentielles et logarithmiques. le exp (valeur en $) la fonction retournera la constante e élevé au pouvoir de float $ valeur. De même, vous pouvez calculer le logarithme d’un nombre donné pour n’importe quelle base en utilisant le log ($ arg, $ base) une fonction. Si la $ base est omis, le logarithme sera calculé en utilisant la base naturelle e. Si vous voulez calculer le logarithme d’un nombre en base 10, vous pouvez simplement utiliser la fonction log10 ($ arg).

Une autre fonction qui pourrait vous être utile est pow ($ base, $ exp), qui retourne $ base élevé au pouvoir de $ exp. Certains d’entre vous préféreront peut-être utiliser le ** opérateur. L'expression $ a ** $ b donnera le même résultat que pow ($ a, $ b). Cependant, vous pouvez obtenir des résultats incorrects dans certaines situations avec $ a ** $ b. Par exemple, -1 ** 0,5 te donnera -1, ce qui est incorrect. Calculer la même expression en utilisant pow (-1, 0.5) donnera la valeur correcte, NaN.

Autres fonctions mathématiques utiles

Chiffres arrondis

Il y a aussi beaucoup d'autres fonctions mathématiques importantes. Vous pouvez arrondir les fractions ou les nombres décimaux jusqu’à l’entier le plus proche à l’aide des touches ceil (float $ value) une fonction. Ceci convertira les 2.1 et 2.9 en 3. De même, vous pouvez arrondir les fractions ou les nombres décimaux au nombre entier le plus proche à l'aide de la touche étage (float $ valeur) une fonction. Cela changera à la fois 2.1 et 2.9 à 2.

Ces fonctions permettent d’agrandir facilement les résultats de différents calculs. Supposons que vous ayez besoin de savoir combien de personnes une salle peut accueillir en fonction de sa superficie. Votre réponse finale après la division sera probablement un nombre décimal, mais vous ne pouvez pas diviser les personnes en fractions. La bonne réponse serait donc la valeur plancher de la valeur calculée..

Vous voudrez souvent arrondir un nombre au nombre entier le plus proche. Par exemple, vous voudrez peut-être changer 2.1 à 2 mais 2.9 à 3. Cela peut être fait facilement en utilisant le round ($ valeur, $ précision, $ mode) une fonction. le $ précision Ce paramètre détermine le nombre de décimales à arrondir. La valeur par défaut de 0 renverra simplement des nombres entiers. Le troisième mode $ Le paramètre est utilisé pour déterminer ce qui se passe si le nombre que vous souhaitez arrondir est situé exactement au milieu. Vous pouvez l'utiliser pour spécifier si 3,5 doit être remplacé par 3 ou 4.

Minimum et maximum

PHP a aussi deux fonctions appelées min ($ valeurs) et max ($ valeurs) pour vous aider à déterminer les valeurs les plus basses et les plus hautes dans un ensemble ou un tableau de nombres. Ces fonctions peuvent accepter différents types de paramètres, tels que deux tableaux et une chaîne. Vous devriez jeter un coup d’œil à la documentation pour voir comment elle serait comparée..

Division entière

Vous pouvez également effectuer une division entière en PHP en utilisant le intdiv (dividende en dollars, diviseur en dollars) une fonction. Dans ce cas, seule la partie intégrante du quotient est renvoyée après une division. De même, vous pouvez aussi obtenir le reste ou le modulo après la division de deux arguments en utilisant le fmod (dividende en dollars, diviseur en dollars) une fonction. La valeur renvoyée sera toujours inférieure à la $ diviseur en magnitude.

Il y a quelques autres fonctions utiles comme is_nan (valeur de $), is_finite (valeur de $) et is_infinite ($ val) qui peut être utilisé pour déterminer si la valeur est un nombre et, si c'est un nombre, si elle est finie ou infinie. N'oubliez pas que PHP considère que toute valeur trop grande pour tenir dans un float est infinie. Alors is_finite () reviendra vrai pour 100 mais factorielle faux pour 1000 factorial.

Générer des nombres aléatoires en PHP

Les nombres aléatoires s'avèrent très utiles dans un certain nombre de situations. Vous pouvez les utiliser pour générer des données "aléatoires" pour votre application ou pour générer des instances ennemies dans des jeux, etc. Il est très important de se rappeler qu'aucune des fonctions décrites dans cette section ne génère de nombres aléatoires sécurisés de manière cryptographique. Ces fonctions ne sont conçues que pour être utilisées dans des situations où la sécurité ne pose pas de problème, par exemple pour afficher des messages de bienvenue aléatoires destinés aux visiteurs réguliers ou pour générer des données statistiques aléatoires..

Les fonctions rand ($ min, $ max) et mt_rand ($ min, $ max) peut générer des entiers aléatoires positifs entre des valeurs données incluant le $ min et $ max valeur. Lorsque les fonctions sont appelées sans aucun paramètre, elles génèrent des nombres aléatoires compris entre 0 et getrandmax (). Vous pouvez écho la valeur de getrandmax () pour voir le nombre aléatoire maximum possible que ces fonctions peuvent générer sur votre plate-forme.

La fonction mt_rand () est 4 fois plus rapide que rand() et retourne faux si $ max est inférieur à $ min. À partir de PHP 7.1.0, rand() a effectivement été fait un alias de mt_rand (). La seule différence est que rand() ne donne toujours pas d'erreur si $ max est inférieur à $ min maintenir la compatibilité ascendante.

Voici une boucle permettant de générer des valeurs aléatoires comprises entre 0 et 100 un million de fois. Comme vous pouvez le constater, les valeurs 0, 50 et 100 sont générées environ 10 000 fois avec de légères fluctuations..

Ces deux fonctions ont également leurs propres fonctions de semoir, appelées srand () et mt_srand () fournir une graine pour les générateurs de nombres aléatoires. N'oubliez pas que vous appelez uniquement srand () et mt_srand () une fois dans votre programme. En les appelant avant chaque appel rand() et mt_rand () vous donnera les mêmes nombres "aléatoires" à chaque fois.

Dernières pensées

PHP est livré avec de nombreuses fonctions intégrées qui devraient répondre à tous vos besoins de calcul quotidiens. Vous pouvez utiliser ces fonctions pour effectuer vous-même des calculs légèrement plus compliqués, tels que GCD, LCM et factorielles..

Vous devez vous rappeler quelques points lorsque vous utilisez ces fonctions. Par exemple, la valeur renvoyée par des fonctions telles que sol() et ceil () est un entier, mais c'est toujours un float. De même, toutes les fonctions trigonométriques s'attendent à ce que leurs angles soient exprimés en radians. Vous obtiendrez des résultats incorrects si vous leur transmettez une valeur d'angle que vous souhaitez traiter en tant que mesure en degrés. Assurez-vous donc de vérifier la valeur de retour et les arguments attendus de toutes ces fonctions dans la documentation..