Funzione rand() in Perl

Nel linguaggio di programmazione Perl ci sono built-in funzione di rand(). Questa funzione viene utilizzata per ottenere un numero casuale.

Ecco un esempio:

▶ Run
#!/usr/bin/perl

print rand(10);

Questo programma visualizza un numero casuale da 0 (compreso) fino 10 (ma non tra cui il numero di 10).

Ad esempio, il risultato del lavoro di questo programma può essere un numero 2.61509101678715.

Limitazione

Funzione rand() restituisce un numero pseudocasuale. In alcuni casi la situazione in alcune condizioni è possibile prevedere il valore che restituisce la funzione rand(). Causa di questo problema che questa funzione non è crittograficamente supporto. Questa funzione non vale la pena di utilizzare la crittografia, ma per ottenere un valore casuale fuori area crittografia questa funzione si adatta perfettamente.

Argomenti

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

La funzione rand() può essere utilizzato senza argomenti, o dirle esattamente un argomento. La funzione si aspetta di ricevere un numero come valore dell'argomento. Se la funzione riceve un numero ciò porta a un numero.

L'utilizzo di un argomento

Quando si utilizza un numero positivo come argomento la funzione rand() restituisce il numero di maggiore o uguale a 0 e rigorosamente in meno del suo argomento. Ad esempio, se si utilizza 100in come argomento, è possibile ottenere il numero di 72.9877832186506 come il risultato di un lavoro funzione rand().

È possibile utilizzare piccoli argomenti. Se si specifica rand(1.5), il risultato sarà un numero più o uguale 0 e rigorosamente meno 1.5.

Quando si utilizza un numero negativo come argomento la funzione restituisce il numero che rigorosamente di più di un dato argomento e minore o uguale 0.

L'uso senza argomenti

Uso della funzione rand() senza argomenti è lo stesso che usare la sua tesi di 1. Funzione rand() restituisce un numero che è maggiore o uguale a 0 e rigorosamente meno 1, ad esempio 0.813735968739824.

▶ Run
#!/usr/bin/perl

print rand(1);

Si prega di notare, se non si specifica l'argomento, allora l'argomento è il numero di 1, e non il valore della variabile $_. Se è necessario utilizzare $_ come valore rand(), è necessario scrivere in modo esplicito:

▶ Run
#!/usr/bin/perl

$_ = 3;

print rand($_);

0 come valore dell'argomento

Il numero di 0 come valore per il parametro funzione rand() è un caso speciale. rand(0) — è lo stesso che rand(1). La funzione restituisce un numero maggiore o uguale a 0 e rigorosamente meno 1.

L'uso di più di un argomento

Se trasferire la funzione rand() più di un argomento, quello è un errore:

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

La documentazione ufficiale di

Ecco l'output del comando 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.

Altri articoli