この記事では、スクラッチ(Scratch)の「1~10までの乱数」ブロックの使い方を紹介します。
乱数とは、ある範囲の数値から、ランダムに取り出した数値のこと。
「1~10までの乱数」ブロックは、ゲームを作るときなど使う機会がとても多いブロックです。
という方向け。
かんたんなプログラムを例にあげながら紹介します。
変数とリストが分かる前提で解説します。変数やリストって何?という方は下の記事を先に読んでくださいね。
また、スクラッチがはじめての方は、下の記事からごらんください。
乱数とは
乱数とは、ある範囲の数値から、ランダムに取り出した数値のこと。
ランダムは、きまりがなくデタラメということです。
「1~10までの乱数」ブロックの使い方
では、スクラッチで乱数を使ってみましょう。
演算カテゴリにある「1~10までの乱数」ブロックを使います。
1~10の部分に一番小さな数と一番大きな数を入れ、一番小さな数から一番大きな数までのランダムな数値を作り出します。
例1:1から10の中でランダムな数字を言う
- イベントカテゴリの「このスプライトが押されたとき」を出す。
- 見た目カテゴリの「こんにちは!と2秒言う」を出し、「このスプライトが押されたとき」の下に配置する。
- 演算カテゴリの「1~10までの乱数」を出し、「こんにちは!と2秒言う」のこんにちは!の部分に配置する。
例2:コスチュームをランダムに変える
Ghostのスプライトを使っています。
- イベントカテゴリの「このスプライトが押されたとき」を出す。
- 見た目カテゴリの「コスチュームをghost-dにする」を出し、「このスプライトが押されたとき」の下に配置する。
- 演算カテゴリの「1~10までの乱数」を出し、「コスチュームをghost-dにする」のghost-dの部分に配置する。
- 「1~10までの乱数」を「1~4までの乱数」にする。
例3:ランダムな座標へスプライトを動かす
座標(ざひょう)とは、とある位置を指定するための、数字の組み合わせのことです。
スクラッチではステージ上の位置を、x座標(左右)とy座標(上下)2つの座標を使って表します。
座標を乱数にすれば、ランダムな場所にスプライトを表示させることができます。
- イベントカテゴリの「このスプライトが押されたとき」を出す。
- 動きカテゴリの「x座標を0にする」を出し、「このスプライトが押されたとき」の下に配置する。
- 演算カテゴリの「1~10までの乱数」を出し、「x座標を0にする」の0の部分に配置する。
- 「1~10までの乱数」を「-240~240までの乱数」にする。
例4:リストの項目をランダムに参照する
あらかじめリストを作って、項目を10個追加しています。
- イベントカテゴリの「このスプライトが押されたとき」を出す。
- 見た目カテゴリの「こんにちは!と2秒言う」を出し、「このスプライトが押されたとき」の下に配置する。
- 変数カテゴリの「リストの1番目」を出し、「こんにちは!と2秒言う」のこんにちは!の部分に配置する。
- 演算カテゴリの「1~10までの乱数」を出し、「リストの1番目」の1の部分に配置する。
「1~10までの乱数」の10の部分を「リストの長さ」ブロックにすると、リストの項目数に合わせた乱数を作ることができます。
リストの項目数によってプログラムを変えなくてすみますね。
重複しない乱数の作り方
クイズの出題やビンゴの番号を出すときなど、ダブらないでランダムに値を1回ずつ出したいときってありますよね。
リストの項目をランダムにならび変え、ならび変えたリストの項目を順番に参照する方法を紹介します。
リストの項目をランダムにならび変える
まずハタが押されたとき、リストの項目をランダムにならび変えます。
- 変数「そえじ」を10(リストの項目数)にする。
- 2-1~2-5を9回くり返す。
2-1.変数「らんすう」を1から「そえじ」までの乱数にする。
2-2.変数「たいひ」をリストの「らんすう」番目にする。
2-3.リストの「らんすう」番目をリストの「そえじ」番目で置きかえる。
2-4.リストの「そえじ」番目を「たいひ」で置きかえる。
2-5.「たいひ」を-1ずつ変える。
- 変数「そえじ」を1にする。
あらかじめリストを作って、表示させたい値を10個追加しています。
変数「そえじ」、「らんすう」、「たいひ」を作ります。役割は下のとおりです。
- そえじ :
(ハタが押されたとき)リストのならびかわっていない項目の最後を表す。
(このスプライトが押されたとき)リストの項目を順番に表示するときの添字。 - らんすう:取得した乱数を保存。
乱数ブロックは実行するたびに、値が変わってしまうので変数に保存します。 - たいひ :リストの項目を入れかえる時に使う。
一体何をしているのかというと、リストの項目をランダムに選んで、リストの一番後ろと入れかえています。
次はランダムに選んだ項目と、リストの後ろから2番目の項目を入れかえています。
これをくり返してリストの後ろからランダムな順番にならべかえ、リストの中身をシャッフルします。
最後に変数「そえじ」を1にして、リストの項目を順番に表示するときの初期値を設定しておきます。
リストの項目を入れかえる
2-2~2-4で、リストの項目を入れかえています。
リストの項目を入れかえる時は、退避用の変数を用意しましょう。
例:リストの4番目と10番目を入れかえる場合
- 退避用の変数にリストの4番目の値を保存する。
- リストの4番目をリストの10番目の値で置きかえる。
- リストの10番目を退避用の変数の値で置きかえる。
リストの項目を順番に表示する
スプライトが押されたときの処理で、ランダムにならびかえたリストの項目を順番に表示します。
実行結果
リストの長さが変わっても対応できるバージョン
下のプログラムはリストの長さがいくつでも対応できるバージョンです。
さっきのプログラムと見くらべてみてくださいね。
まとめ
スクラッチ(Scratch)の「1~10までの乱数」ブロックの使い方を紹介しました。
乱数とは、ある範囲の数値から、ランダムに取り出した数値のことです。
ゲームや占いなど乱数を使う機会は多いので、ぜひマスターしましょう。