surolog

AI・機械学習・データ分析 と 本 など

(メモ)processingでガウス分布を可視化

NATUREofCODE

processingを用いたプログラミングの書籍として、「NATUREofCODE」というとてもおもしろいものがあります。ざっくりいうとprocessingを使って物理シミュレーションを行う内容なのですが、高校の物理の教科書に出てくるような簡単な物理法則の式を実装・適用するだけで、驚くほど生き生きと物体をシミュレートすることができます。
勉強をかねて、コードを実装していきます。

ガウス分布

正規分布とも言いますし、ラプラス分布とも言います。
正規分布という堅苦しい感じですが、「ありふれた」ぐらいの意味と思っていいと思います。
自然界にありふれた分布ということです。
それでは可視化してみます。
以下がコードになります。

//ガウス分布
import java.util.Random;
Random generator;

void setup(){
  size(640,360);
  generator = new Random();
  frameRate(50);
}

void draw(){
  float num=(float)generator.nextGaussian();
  float sd=60;
  float mean=320;
  float x=sd*num+mean;
  noStroke();
  fill(255,10);
  ellipse(x,180,25,25);
}


nextGaussian()で標準正規分布(平均0,標準偏差1)に従うお行儀の良い分布を発生させています。
そのあと、画面に合わせて中心が320pixel、左右の標準偏差が60pixelの分布にしています。
この結果、下のようなガウス分布の軌跡が残ります。


f:id:sator926:20160201214912g:plain


分布の中心(320pixel)付近に多く円が描かれていますが、左右の離れたところにも時折円が描画されています。この円の出現位置をカウントしてグラフにすれば、よく見る釣鐘型曲線になります。

せば