La función de rand() en Perl

En el lenguaje de programación Perl tiene integrada la función de rand(). Esta función se utiliza para obtener un número aleatorio.

He aquí un ejemplo:

▶ Run
#!/usr/bin/perl

print rand(10);

Este programa mostrará en pantalla un número aleatorio de 0 (inclusive) hasta 10 (pero no incluyendo el número de 10).

Por ejemplo, el resultado del trabajo de este programa puede ser el número de 2.61509101678715.

La limitación de la

La función de rand() devuelve псевдослучайное número. En algunos casos, en ciertas condiciones, se puede predecir ¿cuál es devolverá la función rand(). De ello se deduce que esta función no es criptográficamente soporte. Esta función no debe utilizar la criptografía, pero para obtener un valor aleatorio fuera del área la criptografía de esta función es ideal.

Los argumentos

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

La función de rand() se puede utilizar sin argumentos, o de pasar exactamente un argumento. La función de espera para obtener el número como en el valor del argumento. Si la función recibe no es un número, lo que le lleva a su número.

El uso de un argumento de

Cuando se utiliza el número positivo como argumento de la función rand() devuelve el número de mayor o igual a 0 y estrictamente menor que el de su argumento. Por ejemplo, si utiliza 100en como argumento, se puede obtener el número de 72.9877832186506 como resultado de la operación de la función de rand().

Se puede usar fracciones de argumentos. Si especifica rand(1.5), el resultado será un número más o igual 0 y estrictamente menor 1.5.

Cuando se utiliza un número negativo, como argumento de la función que devuelve el número de estrictamente mayor que el especificado argumento y menor o igual a 0.

El uso sin argumentos

Uso de la función de rand() sin argumentos es lo mismo que usar el argumento de 1. La función de rand() devolverá un número mayor o igual que 0 y estrictamente menor 1, por ejemplo 0.813735968739824.

▶ Run
#!/usr/bin/perl

print rand(1);

Tenga en cuenta, si no se especifica un argumento, el argumento será el número de 1, y no el valor de la variable $_. Si desea utilizar $_ como valor de rand(), es necesario escribir explícitamente:

▶ Run
#!/usr/bin/perl

$_ = 3;

print rand($_);

0 como el valor de un argumento

El número de 0 como el valor del argumento de la función rand() es un caso especial. rand(0) — esto es lo mismo que rand(1). La función devuelve un número mayor o igual 0 y estrictamente menor 1.

El uso de más de un argumento

Si para pasar a la función rand() más de un argumento, lo que se producirá un error:

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

La documentación oficial

He aquí el resultado 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.

Otros articulos