PR

JavaScript入門:乱数と条件分岐でインチキくじ引きを作ろう

【広告】

JavaScriptの基本である乱数生成と条件分岐を使えば、ちょっとしたミニアプリを手軽に作れます。
この記事では、その練習として「インチキくじ引きアプリ」を題材にしながら、コードの流れや仕組みを初心者でも理解しやすい形でまとめました。
動作の仕組みを押さえつつ、実際に動くサンプルコードも紹介します。

アプリの挙動をチェック

「くじを引く」ボタンを押すと「当たり」か「はずれ」かどちらかが出ます。

当たる確率はほとんどないですが、粘り強く押し続けると当たりが出ます。
1発で当たりが出る可能性もゼロではありません。
当たりが出るまで押し続ける必要はありません。

結果は?


絶対に当たらないように思えるかもしれませんが、1%の確率で当たりが出ます。

コード

以下のコードをコピペして使用することができます。
コードの下に解説もあるので、コードの意味を理解しましょう。

<body>
  <button>くじを引く</button>
  <p>結果は?</p>

  <script>
    const button = document.querySelector('button');
    const p = document.querySelector('p');

    button.addEventListener('click', () => {
      button.disabled = true;
      const num = Math.floor(Math.random() * 100);
      function kujibiki() {
        return num === 7 ? '当たり' : 'はずれ';
      }
      p.textContent = kujibiki();
      setTimeout(() => {
        button.disabled = false;
      }, 300);
    });
  </script>
</body>

全体の流れ

「くじを引く」ボタンを押すと、JavaScript が乱数を使って当たりかハズレかを判定し、結果を <p> に表示します。
今回のくじは 7 が出たときだけ当たり という、やや偏った仕様になっています。


HTML 部分

<button>くじを引く</button>
<p>結果は?</p>
  • ボタンをクリックすると抽選が始まります。
  • <p> は結果を表示する場所です。

JavaScript 部分

要素を取得

const button = document.querySelector('button');
const p = document.querySelector('p');
  • querySelector を使って、ボタンと <p> を変数に保存しています。
  • これで、JavaScript から「ボタンを押された時の処理」や「結果表示」ができるようになります。

ボタンが押されたときの処理

button.addEventListener('click', () => {
  • ボタンがクリックされたら、ここに書かれている処理が実行されます。

ボタンを一時的に押せなくする

button.disabled = true;
  • クリック連打で処理が重ならないように、一度押されたら一旦ボタンを無効化します。

乱数でくじの番号を決める

const num = Math.floor(Math.random() * 100);
  • Math.random() は 0以上1未満のランダムな数を返します。
  • それに 100 を掛けて 0〜99 にし、Math.floor で小数を切り捨てています。
  • 最終的に 0〜99 の整数がランダムで 1つ生成されます。

Math.random() の使い方の解説はこちら


くじ引き関数

function kujibiki() {
  return num === 7 ? '当たり' : 'はずれ';
}
  • 引かれた番号 num7 なら「当たり」、それ以外なら 「はずれ」 を返します。
  • 条件を 1 行で書くために三項演算子を使用しています。

三項演算子の使い方の解説はこちら


結果を画面に表示

p.textContent = kujibiki();
  • 判定した結果(当たり or はずれ)を <p> に表示します。

0.3秒後にボタンを再び押せるようにする

setTimeout(() => {
  button.disabled = false;
}, 300);
  • setTimeout を使って、300ミリ秒(0.3秒)後にボタンを再度有効化します。
  • これで連打による予期しない動作を防げます。

ボタンの有効・無効の状態を切り替える方法の解説はこちら


このコードのポイントまとめ

  • 乱数(0〜99)を生成して、特定の数字だけを当たりとする簡単なくじ引き。
  • クリックごとに抽選は独立して行われる。
  • クリック中にボタンを無効化することで二重処理を防ぐ。
  • 初心者でも扱いやすい、乱数+条件分岐 の基本的な組み合わせです。

コードをカスタマイズしてみよう

今回のコードは当たり確率が1%ですが、当たり確率を50%にしてみる、30%にしてみるなど、自由にカスタマイズしてみましょう。

当たり確率が50%にしたい場合

const num = Math.floor(Math.random() * 2);
function kujibiki() {
return num === 0 ? '当たり' : 'はずれ';
}

Math.random() * 2 → 0以上2未満の乱数
Math.floor(…) → 0 または 1

0 が出る確率:50%
1 が出る確率:50%

そのため、

num === 0 → 当たり(50%)
num === 1 → はずれ(50%)

となり、当たり確率 50% のくじ引きになっています。

当たり確率30%にしたい場合

const num = Math.floor(Math.random() * 10);
function kujibiki() {
  return num < 3 ? '当たり' : 'はずれ';
}

0〜9 の 10 通り → 0,1,2 の3通りが当たり → 30%

タイトルとURLをコピーしました