Perl - Mathematik

[ <= ] [ HOME ] [ INHALT ] [ INDEX ] [ => ]

Auch wenn Perl eigentlich keine Sprache für numerische Berechnungen ist, stehen doch eine Reihe von mathematischen Operatoren und Funktionen zur Verfügung.

Arithmetik

Der In-(De-)krement-Operator erhöht (verringert) den Wert des Operanden um 1. Steht der Operator vor der Variablen, so wird zuerst die Inkrementierung (Dekrementierung) und anschließend die Auswertung der Variablen durchgeführt, umgekehrt ist es, wenn der Operator hinter der Variablen steht.

Beispiel :

#!/usr/local/bin/perl -w

@array = (10,20,30);
$i = 1;
print "$array[++$i]\n";
$i = 1;
print "$array[$i++]\n";

30
20


[ <- ] [ HOME ] [ INHALT ] [ INDEX ] [ -> ]

Vergleichsoperatoren

Achtung: Diese Vergleiche gelten nur im numerischen Kontext, d.h., wenn zwei Zahlen verglichen werden. Zum Vergleich von Zeichenketten sehen die Operatoren anders aus.


[ <- ] [ HOME ] [ INHALT ] [ INDEX ] [ -> ]

Funktionen

Mit Ausnahme von atan2() können die Funktionen auch ohne explizites Argument geschrieben werden; sie werden dann auf den jeweiligen Wert von $_ angewandt.

Anmerkung: Weitere mathematische Funktionen finden sich im sogenannten POSIX-Modul, das zur Standard-Bibliothek von Perl gehört.


[ <- ] [ HOME ] [ INHALT ] [ INDEX ] [ -> ]

Zufallszahlen

(Pseudo-)Zufallszahlen werden in Perl mit der Funktion rand() erzeugt. Ohne Argument liefert sie Werte zwischen 0 und 1, ansonsten (Gleitkomma-) Zahlen zwischen 0 und dem Wert des Arguments. Um nicht jedesmal die gleiche Zahlenreihe zu erhalten, wird die Funktion srand() eingesetzt, die den Zufallszahlengenerator mit einer Zahl (Funktionsargument) initialisiert. Ohne Argument wird srand(time) ausgeführt, d.h. als Initialisierung dient die Zahl der Sekunden seit dem 1.1.1970.

Beispiel:

#!/usr/local/bin/perl -w

for($i = 0;$i < 3;$i++) {
  print "(1)".rand()."\n"
}
print "\n";

srand(12345678);
for($i = 0;$i < 3;$i++) {
   print "(2)".rand(0.6)."\n"
}
print "\n";

srand();                       # srand(time);
for($i = 0;$i < 3;$i++) {
   print "(3)".rand(150)."\n"
}

(1)0.1558837890625
(1)0.480255126953125
(1)0.754150390625

(2)0.328985595703125
(2)0.1641357421875
(2)0.031640625

(3)142.277526855469
(3)71.8826293945312
(3)148.493957519531

Bei mehrmaligem Abarbeiten des Skriptes ergeben sich nur bei den Zahlen der Gruppe (2) jeweils die gleichen Werte.


[ <= ] [ <- ] [ HOME ] [ INHALT ] [ INDEX ] [ -> ] [ => ]

Autor: Eike Grote Letzte Änderung: 19.06.2001