Processing lesson(5) ランダム

Note
教材を使用される方は、“lesson資料のご利用について”のご一読をお願いします。

Learning Objectives

  • プログラムで使う"random"(ランダム, 乱数)について理解する
  • ランダムを使った表現を試してみる

Unit07-5の課題

  • 以下のプログラムを、最初はコピー&ペーストで構わないので試してみる
  • 自分のパソコン上で動いたら、どれかのプログラムを自分なりにアレンジして変えて、動かしてみる(大きさ、位置、色、タイミングなどをランダムにしてみる
  • 今回は特に提出はありません。各自の環境で、試して遊んでみましょう

講義

(外部サイト) ZERO-PED 震える・撒き散らす


例1. 円の位置をランダムにする

../../images/lesson/2020/09/export.gif

void setup() {
    size(600, 600);
    background(255, 255, 255);
}
void draw() {
    // 円の位置をランダムに
    ellipse(
        random(0, 600),
        random(0, 600),
        100,
        100
    );
}

例2. 円の位置、色、形をランダムにする

../../images/lesson/2020/09/export-1.gif

void setup() {
    size(600, 600);
    background(255, 255, 255);
    noStroke();
}
void draw() {
    // 色をランダムに
    fill(
        random(255),
        random(255),
        random(255)
    );
    // 円の位置と形をランダムに
    ellipse(
        random(600),
        random(600),
        random(50),
        random(50)
    );
}

例3. 震える

../../images/lesson/2020/09/export-2.gif

void setup() {
    size(600, 600);
    background(255, 255, 255);
    noStroke();
}

void draw() {
    // 背景を塗りつぶす
    background(255, 255, 255);
    // 色をランダムに
    fill(
        random(255),
        random(255),
        random(255)
    );
    // 円の位置を、キャンバス中央からランダムに少しだけずらす
    ellipse(  
        300 + random(-10, +10),
        300 + random(-10, +10),
        100, 100
    );
}

例4. 水墨画風

../../images/lesson/2020/09/スクリーンショット-2020-09-14-15.22.12-983x1024.png

void setup() {
    size(600, 600);
    background(255, 255, 255);
}

// マウスをドラッグしたときに実行されるブロック
void mouseDragged() {
    // 線の幅をランダムに
    strokeWeight(random(1, 20));
    // 線の不透明度もランダムに
    stroke(0, 0, 0, random(100, 255));
    // 線を引く
    line(pmouseX, pmouseY, mouseX, mouseY);
}

void draw() {
}

例5. 色調を指定する(確率の制御)

../../images/lesson/2020/09/スクリーンショット-2020-09-14-15.26.24-993x1024.png

void setup() {
    size(600, 600); 
    background(255, 255, 255);
}
void draw() {
    if (random(0, 100) < 40) {
        // 40%の確率で塗りを水色に
        fill(57, 171, 245);
    }
    else {
        // それ以外は塗りをランダムに
        fill(random(255), random(255), random(255));
    }
    ellipse(
        random(0, 600),
        random(0, 600),
        random(50),
        random(50)
    );
}