好吧,上次由于交代不是很清楚,搞了个抽样放回的程序,今天重新弄了一下,把它写成模块的形式:
package Sampling;use warnings;use strict;require Exporter;our @ISA = qw(Exporter);our @EXPORT_OK = qw(swor fac); #swor -- sampling without replacementsub 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,主程序调用就可以了。
总结以上是内存溢出为你收集整理的perl 不放回抽样全部内容,希望文章能够帮你解决perl 不放回抽样所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)