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.
my $num1 = rand(); # Random float at least 0 and below 1
my $num2 = rand(7); # Random float at least 0 and below 7
my $num3 = int(rand(10)); # Random integer at least 0 and below 10
Notes:
Calling rand
automatically calls srand
unless srand has already been called.
Currently EXPR with the value 0
is special-cased as 1
. This was undocumented before Perl 5.8.0 and is subject to change in future versions of Perl.
As of Perl v5.20.0 rand()
uses the drand48
pseudorandom number generator to generate random numbers. As a PRNG drand48
should be sufficient for most non-cryptographic needs. If you need cryptographic random numbers check CPAN for crypto safe alternatives.
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: