Scratchで乱数を使ってクイズやゲームを作ると、 「同じ数字が連続で出る」「重複してしまう」「ランダムにならない」 といった悩みを必ず経験します。
とくに初心者ほど、 「乱数ってランダムじゃないの?」 「どうして同じ数字が出るの?」 と混乱しがち。
この記事では、Scratchで乱数が重複する理由と、 重複しないランダム処理を作る正しい方法 をFAQ形式でわかりやすく解説します。
結論:乱数が重複するのは正常であり、重複しない仕組みを自分で作る必要がある
Scratchの乱数は「完全ランダム」なので、 同じ数字が連続して出るのは正常な動作 です。
そのため、 「重複しない乱数を使いたい」 「毎回違う順番で出題したい」 という場合は、次の仕組みを自分で作る必要があります。
重複しないランダム処理の本質(3つ)
- ① 重複チェックを入れる 選んだ数字がリストに存在しないときだけ追加する。
- ② 必要な数がそろうまで繰り返す 10個必要なら「10個そろうまで繰り返す」。
- ③ 番号対応を崩さない 問題文リスト・正解リスト・出題順リストを同じ番号で扱う。
この3つを満たすと、 乱数が重複しない“正しいランダム処理” が完成します。
なぜ乱数は重複するのか?
Scratchの乱数は「完全ランダム」です。
つまり、次のような動作が普通に起こります。
- 3 → 3 → 3 → 7 → 3
- 5 → 1 → 1 → 1 → 9
- 10 → 10 → 2 → 10 → 8
これは「乱数が壊れている」のではなく、 ランダムだからこそ起きる自然な現象 です。
そのため、 「重複しない乱数を使いたい」 「毎回違う順番で出題したい」 という場合は、乱数そのものではなく、
👉 “重複しない仕組み”を自分で作る必要がある
ということになります。
乱数の「重複あり版」と「重複なし版」の違いを解説
Scratchで乱数を使うとき、 「重複ありのランダム抽選」 と 「重複なしのシャッフル」 はまったく別の仕組みです。
ここでは、画像のコードを使って 2つの違いをわかりやすく比較 します。
① 重複あり版:乱数をそのまま使う方式
ここからは、実際のコード例を使って「重複あり」と「重複なし」の違いを具体的に見ていきます。
まずは、もっともシンプルな“乱数をそのまま使う方式(重複あり)”から確認しましょう。
▼ クイズゲーム(重複あり)
👉 Scratch共有ページを開く

このコードは、スプライトを押すたびに 1〜10の乱数をそのまま使う方式 です。
処理の流れ
- スプライトが押される
- 問題番号を「1〜10の乱数」にする
- その番号の問題文を表示
- 出題履歴に追加
- 次の問題へ進む
結果:重複するのが正常
乱数は完全ランダムなので、
- 3 → 3 → 7 → 3
- 10 → 10 → 2 → 10
のように 同じ数字が連続で出るのは正常な挙動。
この方式は「シャッフル」ではない
- 重複する
- 同じ問題が何度も出る
- 出題順はバラバラ
つまりこれは ランダム抽選 であり、 重複なしのシャッフルではない。
② 重複なし版:重複チェックしながらリストを作る方式
次に、乱数を使いながらも「重複しないランダム順」を作る方法を見ていきます。
こちらはクイズやカードゲームで必須となる“重複なしシャッフル”の仕組みです。
▼ クイズゲーム(重複なし)
👉 Scratch共有ページを開く

処理の流れ
- 出題履歴の長さが10になるまで繰り返す
- 問題番号を「1〜10の乱数」にする
- 出題履歴にその番号が存在するかチェック
- 存在しなければ追加
- 10個そろったら終了
結果:重複なしのランダム順が完成
- 同じ番号は絶対に入らない
- 10個すべてユニーク
- 毎回違う並び順が作られる
シャッフルと同じ効果
Scratchにはシャッフルブロックがないため、 この「重複チェック+追加」の方式が シャッフルの本質 になる。
③ 2つの違いをまとめるとこうなる
| 種類 | 重複 | 仕組み | 用途 |
|---|---|---|---|
| 重複あり版(乱数抽選) | あり | 乱数をそのまま使う | ガチャ・ランダムイベント |
| 重複なし版(シャッフル) | なし | 重複チェックしながらリストを作る | クイズ・カードゲーム |
まとめ:スクラッチで乱数を重複させないために必要なのは“仕組みづくり”
Scratchの乱数は「完全ランダム」なので、 同じ数字が連続して出るのは正常な動作 です。
そのため、 「重複しない乱数を使いたい」 「毎回違う順番で出題したい」 という場合は、乱数そのものではなく、
👉 重複しない仕組みを自分で作る必要があります。
重複しないランダム処理の本質(3つ)
- ① 重複チェックを入れる 選んだ数字がリストに存在しないときだけ追加する。
- ② 必要な数がそろうまで繰り返す 10個必要なら「10個そろうまで繰り返す」。
- ③ 番号対応を崩さない 問題文リスト・正解リスト・出題順リストを同じ番号で扱う。
この3つを満たすと、 重複なしのランダム順(シャッフル) が完成します。
乱数の「重複あり」と「重複なし」は別物
- 重複あり版(乱数抽選) 乱数をそのまま使うため、同じ数字が何度も出る。 → ガチャ・ランダムイベント向け。
- 重複なし版(シャッフル) 重複チェックしながらリストを作る。 → クイズ・カードゲーム向け。
Scratchにはシャッフルブロックがないため、 重複チェック+追加の仕組みこそがシャッフルの本質 になります。
この記事で学べること(要点)
- 乱数が重複する理由
- 重複しないランダム処理の作り方
- シャッフルの3つの考え方
- 重複あり版と重複なし版の違い
- クイズやゲームでの応用方法
Scratch初心者が必ずつまずく「乱数の重複問題」を、 仕組みの理解とコード例で完全に解決できる内容になっています。
さらに学びたい方は、完成版のゲームから逆回転して学べる Scratch逆回転講座INDEX をご覧ください。
作りたいゲームから逆算して学べるので、次に何を学べばよいかが一目でわかります。
ご質問があれば、この記事のコメント欄へお気軽にどうぞ。
Scratch や micro:bit の疑問には、この記事のように動画や実際のプログラムを示しながら、わかりやすく回答していきます。
学習のつまずきや「ここがわからない!」というポイントがあれば、ぜひ書き込んでください。

コメント