awkスゴイ!

はじめに

連休も終わりに近付き寝られなくなったので

正規分布

C++11っぽく書いてみた.

#include <iostream>
#include <random>
using namespace std;

class Random_normal {
        public:
                Random_normal(double mu, double sigma) : dist {mu, sigma} {}
                double operator()() {return dist(re);}
        private:
                default_random_engine re;
                normal_distribution<> dist;
};

int main(int argc, char const* argv[])
{
        Random_normal rnd {0.0, 2.0};

        for (int i = 0; i < 10000; i++) {
                cout << rnd() << endl;
        }

        return 0;
}

結果をdata.txtにはく.

awk

すごい,ワンライナーでこんなことができるとは!

# 平均
~/D/t/awk ❯❯❯ awk '{avg+=$1;median[NR]=$1;mode[$1]++}END{asort(mode, keys);asort(median);max=keys[length(keys)];print "mean",avg/NR;}' data.txt
# -> mean -0.000279935

# 標準偏差
~/D/t/awk ❯❯❯ awk '{d[NR]=$1;avg+=$1}END{a=avg/NR;for(i in d)s+=(d[i]-a)^2;print "std",sqrt(s/(NR-1))}' data.txt
# ->std 1.98805