加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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,主程序调用就可以了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读