功能 rand() Perl

在Perl编程语言都有一个内置的功能 rand(). 这个函数是用以产生随机数字。

这里有一个例子:

▶ Run
#!/usr/bin/perl

print rand(10);

这一程序显示随机数目之间的 0 (含)至 10 (但不包括数量 10).

例如,这种程序可以数 2.61509101678715.

限制

功能 rand() 返回伪随机编号。 在某些情况下,在某些条件下可以预测 什么样的价值回报的功能 rand(). 从这因此,这一功能不是密码-强。 这种功能不应该被用于加密,但得到一些随机的价值观的范围 密码-这个功能是理想的。

参数

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

功能 rand() 可以使用,没有任何论点或给她完全一个参数。 功能期望一个数字作为参数值。 如果功能接收不是一个数字 她导致他的号码。

使用同样的参数

当使用的正面数字作为参数的一个函数 rand() 返回的数量 大于或等于 0 和严格低于其论点。 例如,如果使用 100在 作为参数,可以得到的数 72.9877832186506 作为功能的结果 rand().

你可以使用部分的参数。 如果你指定 rand(1.5),结果是一个大于或 等 0 和严格小 1.5.

当您用一个负数作为论证的功能将返回这个数字 严格大于指定的参数少于或等于 0.

使用没有争论

使用 rand() 没有参数是相同的作为,使用它的论点 1. 功能 rand() 将返回这个数字大于或等于 0 和严格小 1,例如 0.813735968739824.

▶ Run
#!/usr/bin/perl

print rand(1);

请注意,如果没有指定一个论点,该论点是数 1,不值 的变 $_. 如果你想使用 $_rand(),有必要写入明确的:

▶ Run
#!/usr/bin/perl

$_ = 3;

print rand($_);

0 的论点值

0 值参数的功能 rand() 是一个特殊的情况。 rand(0) 相同 rand(1). 该功能将返回的数量大于或等于 0 和严格较小的 1.

使用多个参数

如果传输功能 rand() 多个参数,它将错误:

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

官方文件

这里是输出的命令 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.

其他文章