awk -v rand_str=$RANDOM '
47 BEGIN{m_num=ARGV[2]; s_num=ARGV[3]; srand(rand_str);
48 #蓄水池抽样选前s_num个
49 for(i=1;i<=m_num;i++){A[i]=i};
50 for(i=s_num+1; i<=m_num;i++)
51 {---
52 M=int(rand()*i)+1;
53 if (M<s_num) {
54 tmp=A[M];
55 A[M]=A[i];
56 A[i]=tmp;
57 }
58 }
59 for(i=s_num+1;i<=m_num;i++){delete A[i]}#删除多余的
60 slen=asort(A,SA);
61 #for(i=1;i<=s_num;i++){print SA[i]}
62 INDEX=1;
63 }
64 {
65 #each line
66 if(SA[INDEX]==NR){INDEX++;print $0}
67 }' $mark_file $mark_num $sample_num > $sample_file
68 hits=$(awk '{if ($2==1){print $2}}' $sample_file |wc -l);
69 rm -rf $sample_file
70 return $hits
47 BEGIN{m_num=ARGV[2]; s_num=ARGV[3]; srand(rand_str);
48 #蓄水池抽样选前s_num个
49 for(i=1;i<=m_num;i++){A[i]=i};
50 for(i=s_num+1; i<=m_num;i++)
51 {---
52 M=int(rand()*i)+1;
53 if (M<s_num) {
54 tmp=A[M];
55 A[M]=A[i];
56 A[i]=tmp;
57 }
58 }
59 for(i=s_num+1;i<=m_num;i++){delete A[i]}#删除多余的
60 slen=asort(A,SA);
61 #for(i=1;i<=s_num;i++){print SA[i]}
62 INDEX=1;
63 }
64 {
65 #each line
66 if(SA[INDEX]==NR){INDEX++;print $0}
67 }' $mark_file $mark_num $sample_num > $sample_file
68 hits=$(awk '{if ($2==1){print $2}}' $sample_file |wc -l);
69 rm -rf $sample_file
70 return $hits