相关疑难解决方法(0)

随机从文件中选择行而不用Unix扼杀它

我有一个10 ^ 7行文件,其中我想从文件中随机选择1/100行.这是我所拥有的AWK代码,但它会预先包含所有文件内容.我的PC内存无法处理这样的问题.还有其他办法吗?

awk 'BEGIN{srand()}
!/^$/{ a[c++]=$0}
END {  
  for ( i=1;i<=c ;i++ )  { 
    num=int(rand() * c)
    if ( a[num] ) {
        print a[num]
        delete a[num]
        d++
    }
    if ( d == c/100 ) break
  }
 }' file
Run Code Online (Sandbox Code Playgroud)

unix linux awk random-sample file-processing

51
推荐指数
7
解决办法
4万
查看次数

如何从Perl文件中获取n个随机行?

关注这个问题,我需要n从文件(或stdin)中随机获取完整的行.这将类似于headtail,除了我想从中间的一些.

现在,除了使用链接问题的解决方案循环文件之外,n在一次运行中获得精确线条的最佳方法是什么?

作为参考,我试过这个:

#!/usr/bin/perl -w
use strict;
my $ratio = shift;
print $ratio, "\n";
while () {
    print if ((int rand $ratio) == 1); 
}
Run Code Online (Sandbox Code Playgroud)

$ratio我想要的线的粗略百分比在哪里.例如,如果我想要10行中的1个:

random_select 10 a.list
Run Code Online (Sandbox Code Playgroud)

但是,这并没有给我一个确切的数额:

aaa> foreach i ( 0 1 2 3 4 5 6 7 8 9 )
foreach? random_select 10 a.list | wc -l
foreach? end
4739
4865
4739
4889
4934
4809
4712
4842
4814
4817
Run Code Online (Sandbox Code Playgroud)

另一个想法是啜饮输入文件,然后n从数组中随机选择,但如果我有一个非常大的文件,这是一个问题. …

perl random-sample file-processing

6
推荐指数
1
解决办法
4143
查看次数

设计存储算法

这是一个面试饼干的问题 -

鉴于您正在以恒定速率从仪器接收样本,并且您有恒定的存储空间,您将如何设计一种存储算法,使我能够获得有代表性的数据读取,无论何时查看它?换句话说,代表了迄今为止系统的行为.

我无法理解它.所以,我正在寻找想法.

algorithm optimization

5
推荐指数
1
解决办法
2114
查看次数