perl实现从一个文件中随机抽取n行

源码之前,了无秘密,直接上源码:

if(@ARGV!=2){

die "Usage: $0 sample_file sample_number\n";

}

my($sample_file, $sample_number) = @ARGV;

open my $FILE, "<$sample_file" or die "Can‘t open $sample_file $!\n";

my @content = <$FILE>;

my $all_number = @content;

print STDERR "|$all_number|\n";

my %hits;

my $wl = $sample_number;

for(my $i = 0; $i < $all_number; ++$i){

if(rand($all_number-$i) < $wl){

$hits{$i} = 1;

print STDERR "$wl\n";

--$wl;

}

}

my $j = 0;

print STDERR "start\n";

foreach(@content){

print "$_" if $hits{$j};

++$j;

}

print STDERR "done.\n";

原文:http://blog.csdn.net/hongchangfirst/article/details/25126457

作者:hongchangfirst

hongchangfirst的主页:http://blog.csdn.net/hongchangfirst

时间: 2024-10-10 01:43:19

perl实现从一个文件中随机抽取n行的相关文章

Excel中 随机抽取n行 存储在access中

string[] re = new string [50];         Random w = new Random();         /// <summary>         /// 产生50个不同的数 以随机抽题         /// </summary>         /// <returns></returns>         private string[] Random()         {             int[] 

从数组中随机抽取一个值,(别人问我,我自己想到的一个方法)

今天本来在群里瞎扯淡的,突然看到有人问一个问题,大概意思是:怎么样从一个数组中随机抽取一个元素.当时我想到了PHP中有一个内置函数是打乱数组的顺序的.我就想用这个函数打乱一下,然后就抽取第一个元素. 代码如下: $array = array( 'das'=>array('id'=>1,'name'=>'于杭'), 'dasss'=>array('id'=>2,'name'=>'张三'), 'dass'=>array('id'=>3,'name'=>'李

PHP中如何在数组中随机抽取n个数据的值 - array_rand()?

PHP中如何在数组中随机抽取n个数据的值? 最佳答案 array_rand() 在你想从数组中取出一个或多个随机的单元时相当有用.它接受 input 作为输入数组和一个可选的参数 num_req,指明了你想取出多少个单元 - 如果没有指定,默认为 1.如果你只取出一个,array_rand() 返回一个随机单元的键名,否则就返回一个包含随机键名的数组.这样你就可以随机从数组中取出键名和值. 如下例所示: <?php $input = array("Neo", "Morp

js实现从长度为100的数组中随机抽取5个不同值

方法一:这个是我的方法,望大家指正…… <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>从长度为100的数组中随机抽取5个不同值</title> </head> <body> <script> var arr = new Array(100); var flag_a =

matlab 哪个函数可以从一组数据中随机抽取一部分出来

假设你原来的数据存在变量a中 如果,你想从a中随机抽取固定N个数c=randperm(numel(a));b=a(c(1:N));b就是从a中随机抽取的N个数(N应该小于a中元素的总个数) numel(a)获得原来a中元素的个数 c=randperm(numel(a)); 得到一个由1到numel(a))个自然数组成的随机乱序数列 加入a中有100个元素,那么运行完c=randperm(numel(a));之后 c就是一个由1到100的自然数组成的数组,但是顺序是随机打乱的 c(1:N)取c的前

怎样根据一个从一个文本文件中逐一读出每行的字符串(代表的是某个文件夹下的文件名)

怎样根据一个从一个文本文件中逐一读出每行的字符串(代表的是每个文件夹下的文件名) 目的是想根据此文本文件所存储大量的文件名,批量复制或者修改文件名所对应的文件. 在bash下用的命令是: cat /home/username/SafeAppsName.txt | xargs -I{} cp /mnt/apk/apks/{}   /home/username/apks/ 从SafeAppsName.txt中读每行字符串,代表对应文件的文件名. 然后从 /mnt/apk/apks 文件夹下进行拷贝到

从一个数组中随机取出一定数量元素组成新数组

/** * 从一个数组中随机取出一定数量元素组成新数组 * @param array 一个String类型的数组 * @param number需要取出元素的数量 * @return 一个随机的数组 * @throws NullPointerException原数组不能为空 *@throws ArrayIndexOutOfBoundsException新数组长度应不大于原数组的长度 */ public static String[]  getRandomArray(String[] array,

剔除在另一个文件中出现的行

有两个文件A,B.我想要一个文件C,C中含有的是B文件中剔除与A相同行的数据. 用C++编写,用到fstream,ifstream,set以及vector. #include <fstream> #include <iostream> #include <vector> #include <set> using namespace std; struct strless : public std::binary_function<const char*

Java IO把一个文件中的内容以字符串的形式读出来

代码记录(备查): /** * 把一个文件中的内容以字符串的形式读出来 * * @author zhipengs * */ public class FileToString { public static void main(String[] args) { System.out.println(readFileToString()); } private static String readFileToString() { // new 一个空文件,用于获取路径 File dirs = ne