Fonction rand() en Perl

Dans le langage de programmation Perl, il ya une fonction intégrée rand(). Cette fonction est utilisée pour obtenir un nombre aléatoire.

Voici un exemple:

▶ Run
#!/usr/bin/perl

print rand(10);

Ce programme affiche un nombre aléatoire de 0 (inclus) jusqu'à 10 (mais pas y compris le nombre de 10).

Par exemple, le résultat de ce programme peut être le nombre de 2.61509101678715.

La limitation de

La fonction rand() renvoie un nombre pseudo-aléatoire. Dans certains, la situation dans certaines conditions, on peut prévoir quels retourne la fonction rand(). Il s'ensuit que cette fonction n'est cryptographiquement. Cette fonction n'est pas la peine d'utiliser de la cryptographie, mais pour obtenir une valeur aléatoire en dehors de la zone la cryptographie cette fonction est parfait.

Les arguments

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

La fonction rand() peut être utilisée sans argument, ou de lui transmettre exactement un argument. La fonction s'attend à recevoir un nombre comme la valeur de l'argument. Si la fonction ne reçoit pas un nombre elle conduit à un nombre.

L'utilisation d'un argument

Lors de l'utilisation d'un nombre positif comme argument de la fonction rand() renvoie le nombre de supérieur ou égal à 0 et strictement inférieure à son argument. Par exemple, si vous utilisez 100dans comme argument, vous pouvez obtenir un certain nombre de 72.9877832186506 comme le résultat du travail de la fonction rand().

Vous pouvez utiliser fractionnaire des arguments. Si vous spécifiez rand(1.5), le résultat est un nombre supérieur ou l'égalité de 0 et strictement inférieure à 1.5.

Lors de l'utilisation d'un nombre négatif comme argument de la fonction renvoie un nombre qui strictement plus de l'argument et inférieur ou égal à 0.

Utilisation sans arguments

Utilisation de la fonction rand() sans arguments, c'est la même chose que de l'utiliser avec l'argument 1. La fonction rand() renvoie un nombre qui est plus grand ou égal à 0 et strictement inférieure à 1, par exemple 0.813735968739824.

▶ Run
#!/usr/bin/perl

print rand(1);

Attention, si vous ne spécifiez pas un argument, l'argument de l'est le nombre de 1, et non la valeur de la variable $_. Si vous devez utiliser $_ comme valeur rand(), il est nécessaire d'écrire explicitement:

▶ Run
#!/usr/bin/perl

$_ = 3;

print rand($_);

0 comme valeur de l'argument

Le nombre de 0 comme valeur de l'argument de la fonction rand() est un cas spécial. rand(0) — c'est la même chose que rand(1). La fonction retourne un nombre supérieur ou égal à 0 et strictement inférieure à 1.

L'utilisation de plus d'un argument

Si vous passez de la fonction rand() de plus de un argument, ce serait une erreur:

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

La documentation officielle

Voici la sortie de la commande 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.

Autres articles