「ものづくり:make」を楽しみながら学ぶ人へ向けた独習サポートサイト。

micro:bit Lab.【マイクロビット】

micro:bit Lab.では、micro:bit【マイクロビット】に関する情報を紹介しています。

数字をシャッフルする
付録2-36

【実用】ビンゴマシン

2019-10-212019-10-21

決められた範囲の数字(1~10など)をシャッフルして、先頭から順番に表示するビンゴマシンです。

1.内容

決められた範囲の数字(サンプルプログラムでは1~10)をシャッフルして、先頭から順番に表示する簡易的なビンゴマシンです。数字の最大値(サンプルプログラムでは10)はプログラム中で指定します。

このサンプルプログラムは、プログラムでシャッフルする方法(2種類)を紹介したものです。実際に、ビンゴマシンとして使用するには、数字の表示方法に工夫が必要です。例えば「ボタンAを押すごとに数字を先頭から一つずつ順番に表示する」などです。

2.このプログラムの動作に必要なもの

このプログラムは、micro:bit本体のみで動作します。

  • micro:bit本体
  • パソコン(*1)
  • USBケーブル(*1)

(*1):パソコン・USBケーブルは、プログラミングに必要なものです。

3.サンプルプログラム(ブロック)

サンプルプログラム(ブロック)です。

最初だけ実行されるプログラム

変数の初期化を行った後、ビンゴの数字をシャッフルする関数を呼び出しています。

図3-1.最初だけ実行されるプログラム
図3-1.最初だけ実行されるプログラム

関数:ビンゴの初期化

ビンゴの数字という配列に、1から最大値で指定された数まで格納します。その後、配列に保管された数字を入れ換えながらシャッフルします。シャッフルの方法については「5.解説」で紹介します。

図3-2.関数:ビンゴの初期化
図3-2.関数:ビンゴの初期化

関数:ビンゴの初期化_簡易版

関数「ビンゴの初期化」と同様に、配列に保管した数字をシャッフルします。この関数は、乱数で入替元と入替先の添え字(配列の番号)を求めた後、各々に保管された数字を入れ替えてシャッフルするものです。十分にシャッフルされるように、このプログラムでは最大値を二乗した回数分、入れ替えを繰り返しています。この方法は、理解しやすいのですが、処理に無駄が多くなります。

図3-3.関数:ビンゴの初期化_簡易版
図3-3.関数:ビンゴの初期化_簡易版

4.サンプルプログラム(JavaScript)

サンプルプログラム(JavaScript)です。

5.解説

関数「ビンゴの初期化」で行われているシャッフル方法について図解します。

関数「ビンゴの初期化_簡易版」では、入替元と入替先の添え字(配列の番号)を求めるという方法でシャッフルします。十分にシャッフルするために、このプログラムでは最大値を二乗した回数分、入れ替えを繰り返しています。この方法は、理解しやすいのですが、処理に無駄が多くなります。最大値が10の場合、繰り返しの回数は100回となります。

一方、関数「ビンゴの初期化」では、繰り返し回数が最大値-1(最大値より一つ少ない)回数でシャッフルすることができます。その方法は、図5-1のようになります。プログラムと比較しながら、動きを考えてみましょう。

図5-1.効率的なシャッフル
図5-1.効率的なシャッフル
この記事を読んだ人は、こんな記事にも興味があります。
スポンサーリンク
TOPへ移動
目次へ移動