Funktion rand() i Perl

I programmeringssproget Perl har en indbygget funktion rand(). Denne funktion bruges til at generere tilfældige tal.

Her er et eksempel:

▶ Run
#!/usr/bin/perl

print rand(10);

Dette program viser et tilfældigt tal mellem 0 (inklusiv) til at 10 (men ikke herunder antallet 10).

For eksempel, dette program kan være antallet 2.61509101678715.

Begrænsning

Funktion rand() returnerer en pseudotilfældige tal. I nogle situationer kan, under visse betingelser er det muligt at forudsige hvilken værdi, returnerer funktionen rand(). Af dette følger, at denne funktion er ikke kryptografisk-stærk. Denne funktion bør ikke anvendes i kryptografi, men for at få nogle tilfældige værdier ud af scope kryptografi-denne funktion er ideel.

Argumenter

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

Funktion rand() kan anvendes uden nogen argumenter eller give hende præcis ét argument. Den funktion, der forventer, at et nummer som parameter værdi. Hvis den funktion, der modtager, er ikke et tal hun fører ham til nummeret.

Med samme argument

Når du bruger positive tal som argument i en funktion rand() returnerer antallet af større end eller lig med 0 og strengt mindre end sit argument. For eksempel, hvis du bruger 100i som argument, kan du få nummeret 72.9877832186506 som funktion resultatet rand().

Du kan bruge relativ argumenter. Hvis du angiver rand(1.5), resultatet er et tal større end eller lige 0 og strengt mindre 1.5.

Når du bruger et negativt tal som argument funktion returnerer et tal, som der er strengt større end den angivne argument er mindre end eller lig 0.

Brug uden argumenter

Hjælp rand() uden argumenter, er det samme som at bruge det med det argument, 1. Funktion rand() vil returnere et tal, der er større end eller lig 0 og strengt mindre 1, for eksempel 0.813735968739824.

▶ Run
#!/usr/bin/perl

print rand(1);

Bemærk, at hvis du ikke angiver et argument, det argument er antallet 1, ikke værdien af standard variable $_. Hvis du ønsker at bruge $_ som værdi rand(), er det nødvendigt at skrive eksplicit:

▶ Run
#!/usr/bin/perl

$_ = 3;

print rand($_);

0 som argument værdier

Antallet 0 som den værdi, som argument for funktionen rand() er et særligt tilfælde. rand(0) er de samme som rand(1). Den funktion, der vil returnere et tal større end eller lig med 0 og strengt mindre 1.

Brug af mere end ét argument

Hvis overførslen funktion rand() mere end ét argument, vil det fejl:

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

Officiel dokumentation

Her er outputtet af kommandoen 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.

Andre artikler