perl产生随机数实现代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

perl产⽣随机数实现代码
Perl利⽤函数rand()和srand()为随机数(更确切的说是"伪随机数")字符串的⽣成提供了基本的⼯具。

这些函数不是利⽤加密来提供安全性的,所以不要利⽤它们为你⾦融信息的加密。

但是,如果你需要为你的下⼀个游戏或者动态Web⽹站的新特性设计⼀个简单的随机数⽣成器,那么 rand()和srand()可能就是你所需要的。

函数rand()是真正的随机数⽣成器,⽽srand()会设置供rand()使⽤的随机数种⼦。

函数rand()会返回⼀个处于0和你所指定的数值(缺省为1)之间的分数。

如果你在第⼀次调⽤rand()之前没有调⽤srand(),那么系统会为你⾃动调⽤srand()。

要注意,使⽤同种⼦相同的数调⽤srand()会导致相同的随机数序列被⽣成。

这在有的时候很⽅便,尤其在游戏编程⾥,你可能想要重复让随机事件按照精确的相同序列出现。

像下⾯这样使⽤rand():
print "Your lucky number for today is: " . int(rand(100) + 1) . " ";
指令:rand
语法:rand($interger)
说明:常和函数srand搭配来取得⼀随机数,如果没有先宣告stand函数的话,则取出的常数值是⼀个固定值。

这个语法会返回⼀个介于0和$interger之间的数值,如果$interger省略的话,则会返回⼀个介于0和1 的数值。

⽰例:
srand; #要先宣告srand函数,才能产⽣随机数的效果
$int=rand(10); #$int的值会⼤于0⽽且⼩于10如果希望产⽣的乱数是整数的话,就要再加上int #这个函数
$int=int(rand(10)); #$int的值是⼀个整数,且值在0和9之间
————————–
$int=rand(10);
$int=int(rand(10));
print "int is $int\n";
运⾏:
int is 9
再次运⾏:
int is 7
#可见rand取的是随机数字
实例:我有⼀个7000⾏的⽂本数据,想每次从中随机提取1280⾏,提取100次,最后⽣成100个1280⾏的⽂本,该如何做?各位请指点。

复制代码代码如下:
#!/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″;。

相关文档
最新文档