A função rand() em Perl

Na linguagem de programação Perl possui a função de rand(). Esta função é utilizada para obter um número aleatório.

Aqui está um exemplo:

▶ Run
#!/usr/bin/perl

print rand(10);

Este programa exibirá um número aleatório entre 0 (inclusive) até 10 (mas não incluindo o número de 10).

Por exemplo, o resultado da execução deste programa pode ser o número de 2.61509101678715.

O limite de

A função rand() retorna псевдослучайное número. Em alguns, a situação sob certas condições, pode-se prever qual o valor retornará a função de rand(). Disto se segue que esta função não é criptograficamente forte. Esse recurso não vale a pena usar a criptografia, mas para obter algum tipo acidental, valor fora da área de criptografia esse recurso é perfeito.

Argumentos

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

A função rand() pode ser usado sem argumentos, ou passar exatamente um argumento. A função espera receber um número como o valor do argumento. Se a função não recebe número, então ela o leva a um número.

A utilização de um argumento

Quando você usa um número positivo como um argumento para a função rand() retorna o número de maior ou igual a 0 e estritamente menor que o seu argumento. Por exemplo, se você usar 100em como argumento, você pode obter o número de 72.9877832186506 como resultado do trabalho da função rand().

Você pode usar o fractional argumentos. Se você especificar rand(1.5), o resultado será um número mais ou igual 0 e estritamente menor 1.5.

Quando você usa um número negativo como um argumento para a função retorna o número que é estritamente mais de um argumento específico e menor ou igual a 0.

O uso sem argumentos

O uso de funções de rand() sem argumentos é o mesmo que usá-la com o argumento de 1. Função rand() retornará um número que é maior do que ou igual a 0 e estritamente menor 1, por exemplo 0.813735968739824.

▶ Run
#!/usr/bin/perl

print rand(1);

Observe que, se você não especificar um argumento, o argumento é o número de 1, e não o valor da variável $_. Se você deve usar $_ como o valor rand(), então, é a necessidade de escrever explicitamente:

▶ Run
#!/usr/bin/perl

$_ = 3;

print rand($_);

0 como o valor do argumento

O número de 0 como o valor de argumento de função rand() é um caso especial. rand(0) é o mesmo que rand(1). A função irá retornar um número maior ou igual a 0 e estritamente menor 1.

O uso de mais de um argumento

Se passar uma função rand() mais de um argumento, então o erro será:

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

A documentação oficial

Aqui está a saída do 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.

Outros artigos