awk rand函数问题
生活随笔
收集整理的這篇文章主要介紹了
awk rand函数问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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
總結
以上是生活随笔為你收集整理的awk rand函数问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell cut 取变量值
- 下一篇: shell 排序函数