You want to make random numbers in a given range, inclusive, such as when you randomly pick an array index, simulate rolling a die in a game of chance, or generate a random password.

Use Perl’s `rand`

function.

$random = int( rand( $Y-$X+1 ) ) + $X;

This code generates and prints a random integer between 25 and 75, inclusive:

$random = int( rand(51)) + 25; print "$random\n";

The `rand`

function returns a fractional number,
from (and including)
up to (but not including) its argument. We give it an argument of 51
to get a number that can be
or more, but never 51 or more. We take the integer portion of this to
get a number from
to 50, inclusive (50.99999.... will be turned to 50 by
`int`

). We then add 25 to it, to get a number from
25 to 75, inclusive.

A common application of this is the random selection of an element from an array:

$elt = $array[ rand @array ];

And generating a random password from a sequence of characters:

@chars = ( "A" .. "Z", "a" .. "z", 0 .. 9, qw(! @ $ % ^ & *) ); $password = join("", @chars[ map { rand @chars } ( 1 .. 8 ) ]);

We use `map`

to generate eight random indices into
`@chars`

, extract the corresponding characters with
a slice, and join them together to form the random password. This
isn’t a *good* random number, though, as its
security relies on the choice of seed, which is based on the time the
program started. See Section 2.8 for a way to better
seed your random number generator.

The `int`

, `rand`

,
`map`

, and ...

Start Free Trial

No credit card required