Perl: Generating a Random Number with Rand()

By
April 2, 2008 | Code Snippets, Thoughts from the team

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

More like this