perl 不放回抽样
发布时间:2020-12-16 00:15:16 所属栏目:大数据 来源:网络整理
导读:好吧,上次由于交代不是很清楚,搞了个抽样放回的程序,今天重新弄了一下,把它写成模块的形式: package Sampling;use warnings;use strict;require Exporter;our @ISA = qw(Exporter);our @EXPORT_OK = qw(swor fac); #swor -- sampling without replaceme
好吧,上次由于交代不是很清楚,搞了个抽样放回的程序,今天重新弄了一下,把它写成模块的形式: package Sampling; use warnings; use strict; require Exporter; our @ISA = qw(Exporter); our @EXPORT_OK = qw(swor fac); #swor -- sampling without replacement sub swor{ my ($sample_num,$sampling_num) = @_; my @array = (1..$sample_num); my @percom; for(my $i = 0; $i < $sampling_num; $i ++) { my $index = int(rand(@array)); push @percom,$array[$index]; my @tmp; if($index eq 0) { @tmp = @array[($index + 1)..$#array]; }elsif($index eq $#array){ @tmp = @array[0..($index - 1)]; }else{ @tmp = (@array[0..($index - 1)],@array[($index + 1)..$#array]); } @array = (); @array = @tmp; } return @percom; } sub fac{ my $value = shift; if($value eq 1) { return 1; }elsif($value eq 0){ return 1; }else{ return $value * &fac($value - 1); } } 文件名保存与package相同的名字,后缀为.pm,主程序调用就可以了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |