スクラッチ リスト シャッフル 方法|問題の順番を入れ替えるには?Scratch質問編(FAQ)

Scratch質問編(FAQシリーズ)
  1. 導入:初心者が必ず迷う「リストのシャッフル」
  2. 結論:Scratchのシャッフルは“考え方”が本質であり、方法は1つではない
    1. シャッフルの考え方は複数ある(どれも正解になり得る)
      1. ① 入れ替え処理(swap)で並び替える方法
      2. ② ランダムに番号を選び、重複チェックしながらリストを作る方法
      3. ③ 乱数で直接問題番号を選び、出題済みリストで管理する方法
    2. この記事で紹介している方法は“1つの実装例”にすぎない
    3. どの方法でも共通して大事なのは「番号対応を崩さないこと」
    4. 最終結論
  3. スクラッチ リスト シャッフルの作り方
    1. ① 問題文リストと正解リストを作る(初期化)
      1. 手順①:リストを初期化する
      2. 手順②:問題文リストに10問の計算問題を追加する
      3. 手順③:正解リストに答えを追加する
      4. 手順④:ここまでで「シャッフル前のリスト」が完成
    2. ② シャッフル処理(出題順リストをランダム生成する)
      1. 手順①:出題順リストが10問分になるまで繰り返す
      2. 手順②:問題番号を1〜10の乱数で選ぶ
      3. 手順③:その番号が出題順リストに“まだ入っていない”か確認する
      4. 手順④:存在しなければ、出題順リストの1番目に追加する
      5. 結果:1〜10の数字が重複なくランダムな順番で並ぶ
      6. 重要ポイント
    3. ③ シャッフル後の出題順リストを使って出題する
      1. 手順①:ゲーム開始の合図を受け取る
      2. 手順②:10問分の出題を繰り返す
      3. 手順③:シャッフルされた順番で問題文を出す
      4. 手順④:正解リストの同じ番号で答え合わせする
      5. 手順⑤:正解・不正解を表示する
      6. 手順⑥:次の問題へ進む
    4. ④ 初心者がよく間違えるポイント
      1. ① 出題順リストに“重複チェック”を入れていない
      2. ② 出題順リストの長さを“10”に固定していない
      3. ③ 問題文リストと正解リストの“番号対応”を崩してしまう
  4. まとめ:Scratchのシャッフルで大事なことはこの3つ
    1. ① 重複チェックを入れること(ランダム順が完成する)
    2. ② 10個そろうまで繰り返すこと(リスト不足を防ぐ)
    3. ③ 問題文と正解の番号対応を崩さないこと(判定がズレない)
    4. この3つを満たすと、Scratchで最も正しいシャッフル構造になる
    5. シャッフル技術の応用

導入:初心者が必ず迷う「リストのシャッフル」

Scratchでクイズゲームやカードめくりゲームを作るとき、必ずぶつかるのが「リストのシャッフルってどうやるの?」という疑問です。

問題の順番をランダムにしたい、毎回違う並びで出題したい──そんなときに必要なのが「リストの並び替え(シャッフル)」の仕組みです。

しかし、Scratchには「シャッフル」ブロックがないため、初心者ほど「どう組めばいいの?」と迷いがち。

この記事では、Scratchでリストをランダムに並び替える具体的な方法を、FAQ形式でわかりやすく解説します。

クイズ問題のシャッフルや、ゲームのランダム性を作りたい方に最適な内容です。

結論:Scratchのシャッフルは“考え方”が本質であり、方法は1つではない

Scratchには「シャッフル」ブロックがありません。

そのため、リストをランダムな順番に並び替えるには、 自分で“どう並び替えるか”という仕組みを作る必要があります。

この仕組みには複数の実現方法があり、 どれか1つが絶対の正解というわけではありません。

シャッフルの考え方は複数ある(どれも正解になり得る)

① 入れ替え処理(swap)で並び替える方法

一般的なプログラミングで使われる方法。

  • ランダムな番号を選ぶ
  • 一時変数で入れ替える
  • リスト全体を繰り返す

Scratchでも実現できるし、他の言語でも使われる“王道の考え方”。

② ランダムに番号を選び、重複チェックしながらリストを作る方法

  • ランダムに番号を選ぶ
  • 出題順リストに存在しなければ追加
  • 10個そろうまで繰り返す

この方法でも 完全にシャッフルと同じ効果 が得られる。

③ 乱数で直接問題番号を選び、出題済みリストで管理する方法

  • 出題済み番号を記録
  • 未出題の番号だけを選ぶ
  • 全部出題したら終了

これもシャッフルと同じ「ランダム順」を作れる。

この記事で紹介している方法は“1つの実装例”にすぎない

Scratchでは、 「どうやってランダムな順番を作るか?」 という発想が本質であり、 その実現方法は複数あります。

この記事で説明している方法は、 初心者でも理解しやすく、クイズゲームで使いやすい“代表的な1例” です。

どの方法でも共通して大事なのは「番号対応を崩さないこと」

  • 問題文リスト
  • 正解リスト
  • 出題順リスト

この3つの番号対応が保たれていれば、 どのシャッフル方法でも正しく判定できます。

最終結論

Scratchのシャッフルは 「入れ替え処理」だけが正解ではなく、 複数の方法があり、どれも目的を達成できる。

大事なのは、 “どうやってランダム順を作るか”という考え方と、 リストの番号対応を崩さない設計である。

スクラッチ リスト シャッフルの作り方

▼ クイズゲーム(シャッフル)
👉 Scratch共有ページを開く

ここでは、Scratchでリストをランダムに並び替えるための基本的なシャッフル処理を順番に解説します。

① 問題文リストと正解リストを作る(初期化)

Scratchで問題文リストと正解リストを初期化し、計算問題と答えを追加する処理の例
Scratchで問題文リストと正解リストを初期化し、計算問題と答えを追加する処理の例
計算問題と正解をリストに追加し、シャッフル前の状態を作る初期化処理です。

このステップでは、クイズに使う 問題文リスト正解リスト をすべて作成し、 さらに後でシャッフルに使う 出題順リスト を初期化しています。

ここでは、次のような処理が行われています。

手順①:リストを初期化する

  • 問題文リストを「すべて削除」
  • 正解リストを「すべて削除」
  • 出題順リストを「すべて削除」

これにより、毎回ゲーム開始時に まっさらな状態からリストを作り直す ことができます。

手順②:問題文リストに10問の計算問題を追加する

次の10問が順番に追加されています。

  • 5 + 8
  • 7 + 6
  • 13 – 6
  • 4 + 8
  • 10 / 2
  • 2 × 9
  • 10 – 6
  • 2 + 4
  • 3 × 6
  • 8 / 2

これで 問題文リスト(10問分)が完成

手順③:正解リストに答えを追加する

同じように、問題文と対応する正解が順番に追加されます。

手順④:ここまでで「シャッフル前のリスト」が完成

  • 問題文リスト(10問)
  • 正解リスト(対応する答え)
  • 出題順リスト(空の状態)

この3つが揃ったことで、 次のステップ「シャッフル処理」で ランダムな出題順を作る準備が整った という状態になります。

② シャッフル処理(出題順リストをランダム生成する)

Scratchで出題順リストをランダム生成する処理の例
乱数で選んだ問題番号を、重複チェックしながら出題順リストに追加して並び順を作っています

このプログラムでは、次の流れで「出題順リスト」をランダムに作っています。

手順①:出題順リストが10問分になるまで繰り返す

まず、 出題順リストの長さが10になるまで処理を繰り返します。

これが「10問分のランダムな並び順」を作るためのループ。

手順②:問題番号を1〜10の乱数で選ぶ

繰り返しの中で、 1〜10の中からランダムに問題番号を1つ選びます。

例:3、7、10、1…など。

手順③:その番号が出題順リストに“まだ入っていない”か確認する

画像のコードでは、

  • 「出題順の中の問題番号の場所 = 0」 → つまり その番号がまだリストに存在しない

という意味。

手順④:存在しなければ、出題順リストの1番目に追加する

重複していない番号だけを追加することで、

  • 同じ番号が2回入らない
  • 10個の番号がすべてユニークになる

という仕組みが成立する。

結果:1〜10の数字が重複なくランダムな順番で並ぶ

この処理を繰り返すことで、

  • 出題順リストには 1〜10の数字が重複なしでランダムに並ぶ
  • 毎回違う並び順が生成される
  • クイズの出題順が毎回変わる

という状態が完成する。

重要ポイント

Scratchには「シャッフル」ブロックがありません。

そのため、このプログラムでは “入れ替え処理(swap)”ではなく

  • ランダムに番号を選ぶ
  • 重複していなければ追加する
  • 10個集まるまで繰り返す

という方法で シャッフルと同じ効果 を作っています。

処理(swap)やランダム追加こそがシャッフルの本質 です。

③ シャッフル後の出題順リストを使って出題する

Scratchでシャッフルされた出題順リストを使って問題を出題し、正解判定する処理の例
シャッフルされた出題順リストを使い、問題文と正解リストの同じ番号を参照して答え合わせする仕組みを示したコードです。

シャッフル済みの「出題順リスト」を使って問題を 1問ずつ出題し、答え合わせをする仕組みになっています。

手順①:ゲーム開始の合図を受け取る

「ゲーム開始を受け取ったとき」 → 出題処理がスタートする。

手順②:10問分の出題を繰り返す

「何問目 = 10 まで繰り返す」 → 1問目から10問目まで、順番に問題を出す。

ここで使われる 何問目 は「現在の問題番号」を表す変数。

手順③:シャッフルされた順番で問題文を出す

「問題文の 出題順 の 何問目 番目 と聞いて待つ」

意味:

  • 出題順リストの「何問目番目」に入っている番号を取り出す
  • その番号を使って問題文リストの該当する問題を表示する
  • プレイヤーの回答を待つ

例: 出題順リストの3番目が「7」なら → 7番目の問題文を出題する。

手順④:正解リストの同じ番号で答え合わせする

「もし 答え = 正解リスト の 出題順 の 何問目 番目 番目 なら」

意味:

  • 出題順リストの「何問目番目」に入っている番号を使う
  • 正解リストの同じ番号を参照する
  • プレイヤーの答えと一致するか判定する

例: 出題順リストの3番目が「7」なら → 正解リストの7番目と比較する。

手順⑤:正解・不正解を表示する

一致した場合: → 「正解」と2秒言う

一致しない場合: → 「不正解」と2秒言う

手順⑥:次の問題へ進む

「何問目を 何問目 + 1 にする」 → 次の問題番号へ進む → 手順②に戻って繰り返す

④ 初心者がよく間違えるポイント

① 出題順リストに“重複チェック”を入れていない

初心者が最もよくやるミスはこれ。

  • ランダムで番号を選ぶ
  • そのまま出題順リストに追加する

これをやると、 同じ番号が何度も入ってしまい、10問すべてが揃わない

  • 「出題順の中の問題番号の場所 = 0」 → 存在しないときだけ追加する

という重複チェックが入っている。

これがないとシャッフルは成立しない。

② 出題順リストの長さを“10”に固定していない

初心者はよく、

  • 「10回繰り返す」
  • 「10回追加する」

と書いてしまう。

しかし、ランダムで番号を選んでいる以上、 重複が出る可能性があるため、10回では必ず10個揃わない。

  • 「出題順の長さ = 10 まで繰り返す」

となっていて、 10個揃うまで繰り返す という正しい方法になっている。

③ 問題文リストと正解リストの“番号対応”を崩してしまう

初心者がやりがちなミス:

  • 問題文だけシャッフルする
  • 正解リストを別の順番で扱う
  • 出題順リストを使わずに「乱数で問題を出す」

こうすると、 問題文と正解がズレてしまい、判定が正しくできない。

  • 出題順リストの番号
  • 問題文リストの同じ番号
  • 正解リストの同じ番号

を使っているため、 必ず正しい組み合わせで判定できる。

まとめ:Scratchのシャッフルで大事なことはこの3つ

Scratchには「シャッフル」ブロックがありません。

そのため、クイズの出題順をランダムにするには、次の3つが本質になります。

① 重複チェックを入れること(ランダム順が完成する)

ランダムで選んだ問題番号が 出題順リストに存在しないときだけ追加する という仕組みが必須。

これがないと、同じ番号が何度も入り、10問そろわない。

② 10個そろうまで繰り返すこと(リスト不足を防ぐ)

「10回繰り返す」ではなく、 出題順リストの長さが10になるまで繰り返す という条件が重要。

重複が出る以上、固定回数ではリストが完成しない。

③ 問題文と正解の番号対応を崩さないこと(判定がズレない)

問題文リストと正解リストは 同じ番号で対応している

出題順リストで並び替えても、 番号対応が保たれているから正しく判定できる。

この3つを満たすと、Scratchで最も正しいシャッフル構造になる

この3つをすべてクリアすれば、 Scratchで最も正しい「出題順シャッフル+正解判定」の構造になります。

シャッフル技術の応用

  • クイズ問題のランダム出題に必須
  • 正解リストと同期させるのが重要
  • カードゲームの並び替え
  • 迷路生成のランダム化
  • 敵の出現順のランダム化

初心者でも理解しやすく、ゲームの幅が一気に広がるテクニックです。

さらに学びたい方は、完成版のゲームから逆回転して学べる Scratch逆回転講座INDEX をご覧ください。
作りたいゲームから逆算して学べるので、次に何を学べばよいかが一目でわかります。

ご質問があれば、この記事のコメント欄へお気軽にどうぞ。
Scratch や micro:bit の疑問には、この記事のように動画や実際のプログラムを示しながら、わかりやすく回答していきます。
学習のつまずきや「ここがわからない!」というポイントがあれば、ぜひ書き込んでください。

コメント