a-15 動き(3) 乱数

a-15 乱数

random()は、設定した範囲内の乱数を作り出す関数

random()関数は、必ず浮動小数点数を返すので、代入演算子(=)の左側の変数はfloat型になる。

ランダムに描く

void setup(){
  size(500,250);
}

void draw(){
  background(249,221,160);
  for(int x = 10; x < width; x += 10){
    float mx = mouseX / 10;
    float offsetA = random(-mx,mx);
    float offsetB = random(-mx,mx);
    line(x + offsetA,50,x - offsetB,200);
    stroke(234,76,37); 
  }
}

マウスがウィンドウの最も左側にある状態

マウスがウィンドウの中央付近にある状態

右側にいくにつれて乱数の効果が強調される。

マウスがウィンドウの左側では、変化量は小さく、右側にいくほど、乱数の効果が強調される。random()関数は、forループの中にあるので、線を描くたびに新しい乱数が生成される。

ランダムに動かす

float speed = 2.5;
int diameter = 20;
float x;
float y;

void setup(){
  size(500,250);
  x = width/2;
  y =height/2;
}

void draw(){
  x += random(-speed,speed);
  y += random(-speed,speed);
  x = constrain(x,0,width);
  y = constrain(y,0,height);
  ellipse(x,y,diameter,diameter);
  }

円の位置は、乱数によってフレームごとに変化する。background()関数を使わない状態だと、円が移動する軌跡が残る。constrain()関数は、円をウィンドウの中に留めている。