在日常生活中, 我们经常需要一些随机数来帮我们完成需要的任务, 比如掷个骰子, 抽个奖什么的。
在Perl中, 我们可以使用标准库内置的rand函数来生成随机数。rand函数接收一个标量参数, 通常我们用整数, 当然也可以是小数。该参数即为rand的最大值, rand函数的返回值将从0到该参数:比如:
my $random = rand(3);
我们得到的就会是0到3中间的任意数值, 注意, 这里返回的是浮点数。
如果我们只需要0到3中间的整数呢?
很简单, 我们直接使用int函数来返回整数值就可以:
my $random = int(rand(3));
这样就只会是0-3的整数值, 也就是0,1或者2 (不会是3, 因为返回值都小于3)。
那如果我们不需要0到3的整数值, 我们需要10到25之间的整数值的随机数呢?
我们直接加上起始值作为偏差即可:
my $random = int(rand(25 - 10)) + 10;
这样就可以了, 是不是很简单。
rand函数是可以接收小数, 甚至还可以接收负数, 如果传入的是个负数, 从返回的是该负数至0中间的随机数。
那如果我们要抽个奖, 怎么办呢?
这样就可以了:
- my @names = ('zhang', 'li', 'wang');
-
- my $random = $names[rand @names];
-
- print $random;
我们通过rand来返回数组的下标的随机数即可。