Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP

Trigonometrie, Zufallszahlen und mehr mit integrierten PHP-Mathematikfunktionen

by
Read Time:9 minsLanguages:

German (Deutsch) translation by Ines Willenbrock (you can also view the original English article)

Grundlegende Mathematik wird bei der Programmierung häufig verwendet. Wir müssen beim Schreiben von Code häufig verschiedene Werte vergleichen, addieren, multiplizieren, subtrahieren und dividieren.

Manchmal kann die Mathematik, die in einem Programm erforderlich ist, mehr involviert sein. Möglicherweise müssen Sie mit logarithmischen, trigonometrischen oder exponentiellen Funktionen arbeiten. In diesem Tutorial werde ich besprechen, wie man jede dieser Funktionen in PHP verwendet, mit Beispielen.

In diesem Tutorial werden Sie mit den integrierten mathematischen Funktionen in PHP für Trigonometrie-, Exponentiations- und Logarithmusberechnungen eingeführt. Wir werden uns auch mit dem Runden und Generieren von Zufallszahlen befassen.

Trigonometrische Funktionen in PHP

Sie können den Wert von Sinus, Cos und Tangente verschiedener Winkel im Bogenmaß mit sin($angle), cos($angle) und tan($angle) berechnen. Sie alle geben float-Werte zurück, und das an sie übergebene Winkelmaß ist im Bogenmaß.

Das bedeutet, dass Sie, wenn Sie einfach tan(45) berechnen, nicht 1 als Ausgabe erhalten, da Sie tatsächlich den Wert der Tangente bei 45 Bogenmaß berechnen, was etwa 2.578 Grad entspringt. Glücklicherweise hat PHP zwei sehr nützliche Funktionen zum Konvertieren von Bogenmaß in Grad und umgekehrt. Diese Funktionen sind rad2deg() und deg2rad(). Wenn Sie also tatsächlich den Wert der Tangente von 45 Grad berechnen möchten, müssen Sie tan(deg2rad(45)) schreiben.

Es ist bemerkenswert, dass es keine direkte PHP-Funktion gibt, um den Wert von cosec(), sec() oder cot() zu berechnen. Diese Werte sind jedoch nur Gegenseitigkeitsziproken von sin(), cos() und tan(), so dass Sie ihre Werte immer noch indirekt berechnen können.

Sie können auch die Umkehrung durchführen und den Winkel berechnen, in dem ein trigonometrischer Winkel einen bestimmten Wert hat. Diese Funktionen werden asin(), acos() und atan() genannt. Eine Sache, an die Sie sich erinnern müssen, ist, dass die Werte von Sinus und Cosinus niemals über den Bereich von -1 bis 1 für irgendeinen Winkel hinausgehen können. Das bedeutet, dass asin() und acos() nur Werte im Bereich von -1 bis 1 als gültige Argumente akzeptieren können. Ein Wert außerhalb dieses Bereichs gibt Ihnen NaN zurück.

Die Trigonometrie hat viele Anwendungen wie die Bestimmung der Flugbahn eines Projektils oder der Höhen und Entfernungen verschiedener Objekte, so dass der Zugriff auf diese Funktionen definitiv hilfreich ist, wenn Sie Code schreiben, der diese Situationen simuliert.

Diese Funktionen sind auch sehr hilfreich, wenn Sie verschiedene Elemente mit Radial- und Winkelwerten zeichnen möchten. Nehmen wir an, Sie möchten ein Muster von Kreisen um einen größeren Kreis in einem gleichmäßigen Abstand zeichnen. Wenn Sie das PHP GD Shapes Tutorial auf Envato Tuts+ gelesen haben, erinnern Sie sich wahrscheinlich daran, dass Sie beim Zeichnen von Formen Koordinaten in Form von x, y-Koordinaten übergeben müssen, aber dass das Zeichnen kreisförmiger Muster mit Polarkoordinaten einfacher ist.

Die Verwendung dieser trigonometrischen Funktionen hilft Ihnen in diesem Fall, die gewünschten Zahlen mit sin() und cos() zu zeichnen, um Polarkoordinaten in kartesische Form umzuwandeln. Hier ist ein Beispiel:

Die folgende Abbildung zeigt das Endergebnis des obigen PHP-Codes.

Using PHP GD with Trigonometric functionsUsing PHP GD with Trigonometric functionsUsing PHP GD with Trigonometric functions

Exponentielle und logarithmische Funktionen

PHP hat auch einige exponentielle und logarithmische Funktionen. Die Funktion exp($value) gibt die Konstante e hochgesetzt auf die Potenz vom float $value zurück. Ebenso können Sie den Logarithmus einer bestimmten Zahl für eine beliebige Basis mit der Funktion log($arg, $base) berechnen. Wird die $base weggelassen, wird der Logarithmus anhand der natürlichen Basis e berechnet. Wenn Sie den Logarithmus einer Zahl auf Basis 10 berechnen möchten, können Sie einfach die Funktion log10($arg) verwenden.

Eine weitere Funktion, die Sie nützlich finden könnten, ist pow($base, $exp), die $base in die Macht der $exp zurückgibt. Einige von Ihnen bevorzugen vielleicht den **-Operator. Der Ausdruck $a**$b ergibt das gleiche Ergebnis wie pow($a, $b). In bestimmten Situationen können Sie mit $a**$b jedoch falsche Ergebnisse erzielen. Beispielsweise erhalten Sie mit -1**0.5 -1, was falsch ist. Wenn Sie den gleichen Ausdruck mit pow(-1, 0.5) berechnen, erhalten Sie den richtigen Wert NaN.

Weitere nützliche mathematische Funktionen

Runden von Zahlen

Es gibt auch viele andere wichtige mathematische Funktionen. Mit der Funktion ceil(float $value) können Sie Brüche oder Dezimalzahlen auf die nächste ganze Zahl runden. Dadurch werden sowohl 2.1 als auch 2.9 in 3 konvertiert. Ebenso können Sie Brüche oder Dezimalzahlen mit der Funktion floor(float $value) auf die nächste ganze Zahl runden. Es wird sowohl 2.1 als auch 2.9 in 2 geändert.

Diese Funktionen eignen sich gut, um die Ergebnisse verschiedener Berechnungen einfach aufzurunden. Nehmen wir an, Sie müssen wissen, wie viele Personen eine Halle je nach Fläche aufnehmen kann. Ihre endgültige Antwort nach der Division wird höchstwahrscheinlich eine Dezimalzahl sein, aber Sie können die Personen nicht in Brüche unterteilen, so dass die richtige Antwort der Bodenwert des berechneten Wertes wäre.

Oft möchten Sie eine Zahl auf die nächste ganze Zahl auf- oder abrunden. Beispielsweise können Sie 2.1 in 2, aber 2.9 in 3 ändern. Dies kann einfach mit der Funktion round($value, $precision, $mode) erfolgen. Der Parameter $precision bestimmt die Anzahl der Dezimalstellen, auf die abgerundet werden soll. Der Standardwert 0 gibt einfach ganze Zahlen zurück. Der dritte $mode-Parameter wird verwendet, um zu bestimmen, was passiert, wenn die Zahl, die Sie runden möchten, genau in der Mitte liegt. Sie können damit angeben, ob 3.5 in 3 oder 4 geändert werden soll.

Minimum und Maximum

PHP hat auch zwei Funktionen namens min($values) und max($values), mit denen Sie die niedrigsten und höchsten Werte in einem Satz oder Array von Zahlen bestimmen können. Diese Funktionen können verschiedene Arten von Parametern wie zwei Arrays und eine Zeichenfolge akzeptieren. Sie sollten einen Blick auf die Dokumentation werfen, um zu sehen, wie sie verglichen werden.

Ganzzahlige Division

Sie können auch die Ganzzahldivision in PHP mit der Funktion intdiv($dividend, $divisor) durchführen. In diesem Fall wird nach einer Division nur der integrale Teil des Quotienten zurückgegeben. In ähnlicher Weise können Sie den Rest oder modulo auch nach der Division von zwei Argumenten mit der Funktion fmod($dividend, $divisor) abrufen. Der zurückgegebene Wert ist immer kleiner als die Größe $divisor.

Es gibt einige andere nützliche Funktionen wie is_nan($value), is_finite($value) und is_infinite($val), die verwendet werden können, um zu bestimmen, ob der Wert eine Zahl ist und, wenn es sich um eine Zahl handelt, ob es endlich oder unendlich ist. Denken Sie daran, dass PHP jeden Wert, der zu groß ist, um in einen Float zu passen, als unendlich betrachtet. is_finite() wird also true für 100 faktoriell, aber false für 1000 faktoriell zurückgegeben.

Generieren von Zufallszahlen in PHP

Zufallszahlen erweisen sich in einer Reihe von Situationen als sehr nützlich. Sie können sie verwenden, um "zufällige" Daten für Ihre Anwendung zu generieren oder feindliche Instanzen in Spielen usw. zu spawnen. Es ist sehr wichtig, sich daran zu erinnern, dass keine der Funktionen, die wir in diesem Abschnitt besprechen, kryptografisch sichere Zufallszahlen generiert. Diese Funktionen sind nur für Situationen gedacht, in denen Sicherheit kein Problem darstellt, z. B. das Anzeigen zufälliger Begrüßungstexte für wiederkehrende Besucher oder die Generierung zufälliger statistischer Daten.

Die Funktionen rand($min, $max) und mt_rand($min, $max) können positive zufällige ganze Zahlen zwischen gegebenen Werten einschließlich des $min und $max-Werts generieren. Wenn die Funktionen ohne Parameter aufgerufen werden, generieren sie Zufallszahlen zwischen 0 und getrandmax(). Sie können den Wert von getrandmax() mit echo wiedergeben, um die maximal mögliche Zufallszahl zu sehen, die diese Funktionen auf Ihrer Plattform generieren können.

Die Funktion mt_rand() ist 4-mal schneller als rand() und gibt false zurück, wenn $max kleiner als $min ist. Ab PHP 7.1.0 wurde rand() tatsächlich zu einem Alias von mt_rand() gemacht. Der einzige Unterschied besteht darin, dass rand() immer noch keinen Fehler gibt, wenn $max kleiner als $min ist, um die Abwärtskompatibilität aufrechtzuerhalten.

Hier ist eine Schleife, um zufällige Werte zwischen 0 und 100 eine Million Mal zu generieren. Wie Sie sehen, werden die Werte 0, 50 und 100 ca. 10.000 Mal mit leichten Schwankungen erzeugt.

Beide Funktionen haben auch ihre eigenen Seeder-Funktionen namens srand() und mt_srand(), um einen Seed für die Zufallszahlengeneratoren bereitzustellen. Sie sollten nur bedenken, dass Sie srand() und mt_srand() nur einmal in Ihrem Programm aufrufen. Wenn Sie sie vor jedem Anruf bei rand() und mt_rand() anrufen, erhalten Sie jedes Mal die gleichen "zufälligen" Zahlen.

Abschließende Gedanken

PHP verfügt über viele integrierte Funktionen, die alle Ihre täglichen Rechenanforderungen erfüllen sollten. Sie können diese Funktionen verwenden, um etwas kompliziertere Berechnungen wie GCD, LCM und Brüche selbst durchzuführen.

Es gibt nur ein paar Dinge, die Sie beachten sollten, wenn Sie diese Funktionen verwenden. Beispielsweise ist der von Funktionen wie floor() und ceil() zurückgegebene Wert eine ganze Zahl, aber immer noch ein Float. Ebenso erwarten alle trigonometrischen Funktionen, dass ihre Winkel im Bogenmaß angegeben werden. Sie erhalten falsche Ergebnisse, wenn Sie ihnen einen Winkelwert übergeben, den Sie als Gradmaß behandeln wollten. Stellen Sie also sicher, dass Sie den Rückgabewert und die erwarteten Argumente all dieser Funktionen in der Dokumentation überprüfen.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.