【実用】ビンゴマシン
決められた範囲の数字(1~10など)をシャッフルして、先頭から順番に表示するビンゴマシンです。
1.内容
決められた範囲の数字(サンプルプログラムでは1~10)をシャッフルして、先頭から順番に表示する簡易的なビンゴマシンです。数字の最大値(サンプルプログラムでは10)はプログラム中で指定します。
このサンプルプログラムは、プログラムでシャッフルする方法(2種類)を紹介したものです。実際に、ビンゴマシンとして使用するには、数字の表示方法に工夫が必要です。例えば「ボタンAを押すごとに数字を先頭から一つずつ順番に表示する」などです。
2.このプログラムの動作に必要なもの
このプログラムは、micro:bit本体のみで動作します。
- micro:bit本体
- パソコン(*1)
- USBケーブル(*1)
(*1):パソコン・USBケーブルは、プログラミングに必要なものです。
3.サンプルプログラム(ブロック)
サンプルプログラム(ブロック)です。
最初だけ実行されるプログラム
変数の初期化を行った後、ビンゴの数字をシャッフルする関数を呼び出しています。
関数:ビンゴの初期化
ビンゴの数字という配列に、1から最大値で指定された数まで格納します。その後、配列に保管された数字を入れ換えながらシャッフルします。シャッフルの方法については「5.解説」で紹介します。
関数:ビンゴの初期化_簡易版
関数「ビンゴの初期化」と同様に、配列に保管した数字をシャッフルします。この関数は、乱数で入替元と入替先の添え字(配列の番号)を求めた後、各々に保管された数字を入れ替えてシャッフルするものです。十分にシャッフルされるように、このプログラムでは最大値を二乗した回数分、入れ替えを繰り返しています。この方法は、理解しやすいのですが、処理に無駄が多くなります。
4.サンプルプログラム(JavaScript)
サンプルプログラム(JavaScript)です。
5.解説
関数「ビンゴの初期化」で行われているシャッフル方法について図解します。
関数「ビンゴの初期化_簡易版」では、入替元と入替先の添え字(配列の番号)を求めるという方法でシャッフルします。十分にシャッフルするために、このプログラムでは最大値を二乗した回数分、入れ替えを繰り返しています。この方法は、理解しやすいのですが、処理に無駄が多くなります。最大値が10の場合、繰り返しの回数は100回となります。
一方、関数「ビンゴの初期化」では、繰り返し回数が最大値-1(最大値より一つ少ない)回数でシャッフルすることができます。その方法は、図5-1のようになります。プログラムと比較しながら、動きを考えてみましょう。