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 $intn”;
运行:
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″;

时间: 2024-09-15 01:28:29

perl产生随机数的相关文章

perl产生随机数实现代码_perl

Perl利用函数rand()和srand()为随机数(更确切的说是"伪随机数")字符串的生成提供了基本的工具.这些函数不是利用加密来提供安 全性的,所以不要利用它们为你金融信息的加密.但是,如果你需要为你的下一个游戏或者动态Web网站的新特性设计一个简单的随机数生成器,那么 rand()和srand()可能就是你所需要的. 函数rand()是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子.函数rand()会返回一个处于0和你所指定的数 值(缺省为1)之间的分数

使用Perl生成随机密码_perl

可以通过参数控制生成密码中包括的字符种类 #!/usr/bin/perl use strict; use warnings; use Getopt::Std; sub show_help { print "Useage:\n"; print "newp -aAnsl\n"; print "-a\t\t the password contains lower case letters(a-z)\n"; print "-A\t\t the

《高阶Perl》——3.10 可供选择的记忆术

3.10 可供选择的记忆术 大多数纯函数提供一个缓存的机会.尽管乍一看纯函数很少,它们只以一定频率出现.纯函数特别普遍的地方是在排序中用做比较器函数. Perl内置的sort操作符是通用的,它可以把一列任何种类的数据以程序要求的任何次序排序.默认状态下,它把一列字符串以字母表次序排序,但是程序员可以任意提供一个比较器函数(comparator function),告诉Perl怎样重排sort的参数列表.比较器函数被反复调用,每次带有待排序列表中的两个不同元素,如果两个元素次序正确,就必须返回一个

perl 标量和运算符的一些知识介绍_perl

1.Perl将一般的变量成为标量,该变量可以指代的直接量包括两种:数字直接量:字符串直接量. a) 字符串的表示方法:单引号,单引号中的字符串中的含义直观,不需要求变量值和转义字符:双引号,需要求变量值和转义字符值.如果需要消除,通常需要在前面添加反斜杠,其中的单引号或双引号也需要. b) 此外,可以使用qq或q分别代替双引号或单引号,界限符可以用成对的(), <>, {}, []等. 2. 标量变量: $加变量名(数组使用@,哈希结构使用%):变量名区分大小写:使用标量前不用声明但需要初始化

Perl命令行应用程序详解_perl

perl - Practical Extraction and Report Language,Perl有很多命令行参数,通过它可以让你的程序更简练,并且可以写出很多只有一行命令的perl.在这篇文章里我们来了解一些常用的命令行参数. 命令行调用 复制代码 代码如下: perl [ -sTtuUWX ] [ -hv ] [ -V[:configvar] ] [ -cw ] [ -d[t][:debugger] ] [ -D[number/list] ] [ -pna ] [ -Fpattern

perl 常用系统函数列表_基础教程

常用系统函数列表 指令:print语法:print Filehandle LIST说明:这个Filehandle可以看作在I(INPUT)/O(OUTPUT)之间的一个桥梁,可以利用FILEHANDLE来做出数据读入写出的动作.STDIN是代表从哪连输入数据,例如从电脑的键盘输入;STDOUT是代表从哪连输出数据;例如从电脑的屏幕输出;STDERR是代表从哪连输出错误的数据,例如从电脑的屏幕输出.而在PERL语言中有三个标准FILEHANDLE: 1.STDIN(标准输入):是代表STDIN的F

《高阶Perl》——3.6 CAVEATS

3.6 CAVEATS (这是拉丁文的"警告".) 显然,记忆术不适合所有的性能问题.它甚至不适合所有的函数.有几类函数就不应该带记忆. 3.6.1 返回值不依赖参数的函数 记忆术最适合那些返回值只依赖它们的参数的函数.想象一下使时间函数带记忆的愚蠢:第一次你调用它,你将得到时刻,随后的调用将会返回一样的时刻.类似地,想象一个带记忆的随机数生成器是多么固执. 或者想象一个返回值是指示某类成功或失败的函数.你不会希望这类函数是带记忆的,每次被调用都返回同一个值. 然而,记忆术适合一些这样

Perl 函数集小结_perl

一.进程处理函数 1.进程启动函数 函数名 eval 调用语法 eval(string) 解说 将string看作Perl语句执行.正确执行后,系统变量$@为空串,如果有错误,$@中为错误信息. 例子 $print = "print (\"hello,world\\n\");";eval ($print); 结果输出 hello, world 函数名 system 调用语法 system(list) 解说 list中第一个元素为程序名,其余为参数.system启动一

perl中srand()与time的函数使用方法介绍_应用技巧

在perl中srand()提供供rand()使用的随机数种子,rand()产生随机数生成器.如果在第一次调用rand()之前没有调用srand(),那么系统会为你自动调用srand().使用同种子相同的数调用srand()会导致相同的随机数序列被生成. 举例如下: 复制代码 代码如下: srand(26);  $number1=rand(100);  print "$number1\n";  srand(26);  $number2=rand(100);  print "$n