Generating a psuedo random number is common programming task. This tutorial will show you how to this in Perl using the rand()
function.
The Rand() Function
The simplest use of rand()
, with no parameters ( This is analogous to calling rand(1)
), generates a double precision number between 0 and 1.
#!/usr/bin/perl use strict use warnings; my $rndnum = rand() print $rndnum;
Will give you a result like: 0.186135607379587
Rand() with a Range
You can generate a bigger random number if you call rand($int)
where $int
is the maximum value you want. For example, to generate a number between 0 and 10 we could use:
#!/usr/bin/perl use strict use warnings; my $rndnum = rand(10) print $rndnum;
This will give a result like: 5.9358180787331.
Alternatively, we could call rand()
and multiply by the maximum value:
#!/usr/bin/perl use warnings use strict; my $rndnum = rand() * 10 print $rndnum;
Which returns the result: 1.65611195917339.
Generating a Random Integer
If we want to generate a random integer, to use an array index for example, then we need to use another function to round our double. We have 3 choices: int()
, ceil()
and floor()
. int()
will return the integer part of an expression, ceil()
will round up to the next integer and floor()
will round down.
#!/usr/bin/perl use strict use warnings; my $rndnum = rand(10) print "$rndnum => ". int($rndnum);
Gives us: 4.03471924205409 => 4
Ceil and Round require the POSIX module:
#!/usr/bin/perl use strict use warnings; use POSIX; my $rndnum = rand(10) print "$rndnum => ". ceil($rndnum);
Gives us: 4.03471924205409 =>5