Perl利用函數(shù)rand()和srand()為隨機數(shù)(更確切的說是"偽隨機數(shù)")字符串的生成提供了基本的工具。這些函數(shù)不是利用加密來提供安 全性的,所以不要利用它們?yōu)槟憬鹑谛畔⒌募用堋5牵绻阈枰獮槟愕南乱粋€游戲或者動態(tài)Web網(wǎng)站的新特性設(shè)計一個簡單的隨機數(shù)生成器,那么 rand()和srand()可能就是你所需要的。
函數(shù)rand()是真正的隨機數(shù)生成器,而srand()會設(shè)置供rand()使用的隨機數(shù)種子。函數(shù)rand()會返回一個處于0和你所指定的數(shù) 值(缺省為1)之間的分?jǐn)?shù)。如果你在第一次調(diào)用rand()之前沒有調(diào)用srand(),那么系統(tǒng)會為你自動調(diào)用srand()。
要注意,使用同種子相同的數(shù)調(diào)用srand()會導(dǎo)致相同的隨機數(shù)序列被生成。這在有的時候很方便,尤其在游戲編程里,你可能想要重復(fù)讓隨機事件按照精確的相同序列出現(xiàn)。
print "Your lucky number for today is: " . int(rand(100) + 1) . " ";
指令:rand
語法:rand($interger)
說明:常和函數(shù)srand搭配來取得一隨機數(shù),如果沒有先宣告stand函數(shù)的話,則取出的常數(shù)值是一個固定值。這個語法會返回一個介于0和$interger之間的數(shù)值,如果$interger省略的話,則會返回一個介于0和1 的數(shù)值。
#!/usr/bin/perl
use strict;
use warnings;
my $data_file = "file1″;
print " Generating …\n";
open FH, "$data_file" or die "Can not open the required file $data_file !";
my @data = FH>;
close FH;
for (1..100) {
my %hash;
while ((keys %hash) 1280) {
$hash{int(rand($#data))} = 1;
}
open OUT, ">random$_.txt" or die "Can not open the required file random$_.txt !";
foreach (keys %hash) {
print OUT "$data[$_]";
}
close OUT;
}
print " Complete!\7″;