p5js03-07 繰り返し(while文2)

学習日

2026年6月3日

名前

堀内道

自分で作った図形(コードと画像)

✅ 練習問題3-7-2

function setup() {
  let tickets = 7; // 所持チケット枚数
  let n = 0; // 引いた回数

  while (true) {
    n++;

    r = random();
    if (r < 0.03) {
      print(n + "回目: ★★★★★");
      print("合計" + n + "回引きました");
      break;
    } else if (r < 0.03 + 0.07) {
      print(n + "回目: ★★★★");
    } else if (r < 0.03 + 0.07 + 0.15) {
      print(n + "回目: ★★★");
    } else if (r < 0.03 + 0.07 + 0.15 + 0.3) {
      print(n + "回目: ★★");
    } else {
      print(n + "回目: ★");
    }

    tickets--;
  }
}

📷 実行結果(神引き)

✅ 練習問題3-7-4

10個目は星4確定なので星5が出ることが絶対になくなってしまうから。

こうすればいい

function setup() {
  let tickets = 30; // 手持ちチケット
  let n = 0; // 累計回数
  let lose = 0; // 直近の★3以下の回数

  while (tickets > 0) {
    tickets--;
    n++;

    // 通常抽選
    let r = random();
    if (r < 0.03) {
      print(n + "回目: ★5(★★★★★)");
      lose = 0;
    } else if (r < 0.03 + 0.07 || lose == 9) {
      print(n + "回目: ★4(★★★★)");
      lose = 0;
    } else if (r < 0.03 + 0.07 + 0.3) {
      print(n + "回目: ★3(★★★)");
      lose++;
    } else {
      print(n + "回目: ★2(★★)");
      lose++;
    }
  }
  print("合計" + n + "回引きました");
}

まとめ・感想

3-7-4で確定保証のプログラムをどこに入れればいいかだけ考えていたけど、

よく考えたらそのプログラムの中身を星4が出るプログラムに入れればいいだけだと気づいた。

もっと柔軟に考えようと思った。

普通のゲームのガチャにもbreakが欲しい。

コメントする