動作イメージ

Untitled

ソースコード (Processing)

int i=0; int n=0;

//初期設定
void setup() {
  background(255);
  size(500, 500);
  ellipseMode(CENTER);
  strokeWeight(2);
  stroke(0);
  // 円を描く
  ellipse(width/2, height/2, width, height);
  strokeWeight(10);
}

//繰り返し実行
void draw() {
  //一様乱数を得る
  float x = random(0, width);
  float y = random(0, height);
  // 円の中心との距離を求める
  float d = dist(x, y, width/2, height/2);
  if (d < width/2) { //円の内側に入った場合
    stroke(255, 0, 0, 150);
    n++;
  }
  else { //円の外側の場合
    stroke(150, 150);
  }
  // 点を打つ
  point(x, y);
  // 円周率の計算
  float pai = ((float)n)/((float)i) * 4;
  // 結果の表示
  println("n="+n+" pi = "+pai);
  i++;
  if (i>1000) {
    noLoop(); //停止
  }
}