You are viewing the version of this documentation from Perl blead. This is a development version of Perl.
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.

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.

Security:

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: