Funktion rand() in Perl

In der Programmiersprache Perl gibt es die eingebaute Funktion rand(). Diese Funktion wird verwendet, um Zufallszahlen zu.

Hier ist ein Beispiel:

▶ Run
#!/usr/bin/perl

print rand(10);

Dieses Programm zeigt eine Zufallszahl zwischen 0 (einschließlich) bis 10 (aber nicht einschließlich der Anzahl der 10).

Beispiel: das Ergebnis der Ausführung dieses Programms kann die Zahl der 2.61509101678715.

Einschränkung

Funktion rand() gibt eine Pseudozufallszahl. In bestimmten Situation unter bestimmten Bedingungen vorhergesagt werden können welcher Wert zurückgegeben, der die Funktion rand(). Daraus folgt, dass diese Funktion ist nicht kryptografisch sicheren. Diese Funktion sollte nicht verwendet werden in der Kryptographie, aber um jeder zufälligen Werte außerhalb des Bereichs Kryptographie ist diese Funktion perfekt geeignet.

Argumente

my $value1 = rand();
my $value2 = rand($number);

Funktion rand() kann benutzt werden, ohne Argumente, oder senden Sie es genau ein argument. Die Funktion erwartet eine Zahl als argument. Wenn die Funktion bekommt keine Zahl, es führt ihn auf eine Zahl.

Verwendung eines Arguments

Bei der Verwendung der positive Zahl als argument Funktion rand() gibt die Anzahl der größer oder gleich 0 und streng kleiner als sein argument. Zum Beispiel, wenn Sie 100in als argument, erhalten Sie die Anzahl der 72.9877832186506 als Ergebnis der Ausführung der Funktion rand().

Sie können fraktionierte Argumente. Wenn Sie rand(1.5), ist das Ergebnis eine Zahl größer oder gleich 0 und weniger streng 1.5.

Bei der Verwendung einer negativen Zahl als argument an die Funktion gibt die Anzahl der ausschließlich den angegebenen Wert von mehr und weniger oder gleich 0.

Verwendung ohne Argumente

Verwenden der Funktion rand() ohne Argumente ist das gleiche was Sie mit dem argument 1. Funktion rand() Zahl zurück, die größer oder gleich 0 und weniger streng 1, beispielsweise 0.813735968739824.

▶ Run
#!/usr/bin/perl

print rand(1);

Bitte beachten Sie, wenn kein argument angeben, das argument wird die Anzahl der 1und nicht den Wert der Variablen $_. Wenn Sie $_ als Wert rand(), muss dies explizit schreiben:

▶ Run
#!/usr/bin/perl

$_ = 3;

print rand($_);

0 als Wert für das argument

Die Anzahl der 0 - Wert als argument der Funktionen rand() ist ein spezieller Fall. rand(0) — es ist das gleiche was rand(1). Funktion gibt die Zahl größer oder gleich 0 und weniger streng 1.

Mit mehr als einem argument

Wenn diese Funktion rand() mehr als ein argument, dann wird der Fehler:

Too many arguments for rand at script.pl line 3, near "2)"
Execution of script.pl aborted due to compilation errors.

Die offizielle Dokumentation

Hier ist die Ausgabe des Befehls perldoc -f rand:

       rand EXPR
       rand    Returns a random fractional number greater than or equal to 0
               and less than the value of EXPR.  (EXPR should be positive.)
               If EXPR is omitted, the value 1 is used.  Currently EXPR with
               the value 0 is also special-cased as 1 (this was undocumented
               before Perl 5.8.0 and is subject to change in future versions
               of Perl).  Automatically calls "srand" unless "srand" has
               already been called.  See also "srand".

               Apply "int()" to the value returned by "rand()" if you want
               random integers instead of random fractional numbers.  For
               example,

                   int(rand(10))

               returns a random integer between 0 and 9, inclusive.

               (Note: If your rand function consistently returns numbers that
               are too large or too small, then your version of Perl was
               probably compiled with the wrong number of RANDBITS.)

               "rand()" is not cryptographically secure.  You should not rely
               on it in security-sensitive situations.  As of this writing, a
               number of third-party CPAN modules offer random number
               generators intended by their authors to be cryptographically
               secure, including: Data::Entropy, Crypt::Random,
               Math::Random::Secure, and Math::TrulyRandom.

Andere Artikel