awkで平均値を求める

ドラマ『グ・ラ・メ!~総理の料理番~』(2016)

主人公の女性シェフを剛力彩芽が演じます。不審者に包丁を突きつけられても、平然とニンジンをむいています。第三話での総理(小日向文世)のセリフが印象的でした。
「これまでが、これからを決める」と思ってたのですが、「これからが、これまでを決める」という考え方もあるんですね。今までぼんやり過ごしてきても、これから頑張ればいい、と少し気楽になります。
でもちょっと待てよ。。。今までサボってたことが帳消しになるわけではありません。これからを頑張ることで、人からの評価は高くなるかもしれませんが、自分自身は自分がサボってたことを知ってるので、よくよく考えると救われない気がするんです。どう考えるのが人生一番頑張れるか自分なりに出した答えは、
「これからが、これからを決める」
すごく当たり前なことですが、私はこの考え方で頑張ります。

前回は合計でしたが、今回は平均を求めます。
(出現数字 累算 平均の順)

takk~$ seq 10 | awk '{sum+=$1;print $1,sum,sum/NR}' | tr ' ' \\t
1	1	1
2	3	1.5
3	6	2
4	10	2.5
5	15	3
6	21	3.5
7	28	4
8	36	4.5
9	45	5
10	55	5.5
takk~$ 

0から100までの乱数を生成する関数を作ってみます。

takk~$ r(){
> for i in `seq $1`;do expr $RANDOM % 101;done
> }
takk~$ r 10 | tee tensu
49
53
90
42
61
24
73
57
17
43
takk~$ cat tensu
49
53
90
42
61
24
73
57
17
43
takk~$ 

tensuの平均を求めてみます。

takk~$ awk '{sum+=$0;printf"%d\t%d\t%d\n",$0,sum,sum/NR}' < tensu
49	49	49
53	102	51
90	192	64
42	234	58
61	295	59
24	319	53
73	392	56
57	449	56
17	466	51
43	509	50
takk~$ 

乱数なので、分母を大きくすると中間値に近づきますね。

takk~$ r 10000 | awk '{sum+=$0}END{print sum/NR}'
50.0309
takk~$ 

コメント

タイトルとURLをコピーしました