こんにちは、ナナです。
「乱数」とは規則性のない数字の集合のことです。
『規則性がある数字列』とは、例えば「1、2、3、4」や「1、4、9、16」といったものになります。「次の数字はこれだね」とわかるのは、規則性があるからです。

『規則性のない数字列』とは、「5、8、1、9」や「7、2、1、6」といった数字になります。次の数字が何になるのかわかりませんよね。
このような数字のことを『乱数』と呼びます。
この記事では、次のことを学習できます。
では、makecodeを使った、「乱数」の使い方を学んでいきましょう。
「乱数」とは規則性のない数字のこと

師よ!今日のテーマは「乱数」というものですね。規則性がない数字とはどんなところで役に立つのですか?

「乱数」はみんなにとっては身近なものなんですよ。「サイコロ」は代表的な乱数を作るための道具ですね。
「サイコロ」は振ると、毎回出る目が変わりますね。サイコロの数字は「乱数」なんです。
「乱数」が使われる身近なもの
みんなはサイコロを使って「すごろく」や「人生ゲーム」なんてものをしたことがありませんか。

このようなゲームの面白さは、ゲームをする度に結果が変わることですよね。
なぜ、結果が変わるかというと「サイコロ」という規則性のない乱数によって、ゲームの進み方が変わるからですね。
コンピューターゲームのプログラムでも「乱数」は活躍している
みんなが普段遊んでいるコンピューターゲームでも「乱数」はたくさん使われています。
ダンジョンを探索していると、毎回違うモンスターが敵として登場しますね。

規則性がなく毎回異なる敵が登場するのは、乱数を使って敵を出現させているからなのです。

ゲームの面白さは「乱数」によって作られているんですね。
「乱数」のことを「ランダム」という言葉で表現することもあります。覚えておきましょう!
「乱数」ブロックの使い方を覚えよう!

そうか!自分がこれまでに倒してきた敵は毎回違うやつらだったが、やつらは乱数で現れていたのだな。まぁ、全員火遁の術で倒してやったがな!
ところで、師よ!「乱数」をプログラムで使うためにはどのようにすればよいのでしょうか?

火遁?それはゲームの中の話だよねっ?そうだよねっ?現実のことじゃないよね…。聞かなかったことにするよ!
じゃあ、「乱数」のブロックの使い方を覚えようね!
makecodeには「乱数」を作るためのブロックが用意されています。
「乱数」ブロックの使い方
「乱数」ブロックは「計算」ブロック一覧の中にあります。

では、まずは「乱数」の数をLEDに表示してみましょう。「数字を表示」ブロックと組み合わせて「ずっと」ブロックの中に結合してみましょう。

画面左上のmicro:bitに「0~10」の数字のどれかが、ランダムに順番に表示されますね。これが「乱数」です。
乱数に指定する数の範囲
「乱数」ブロックには2つの数字を指定する箇所があります。
ここには乱数として作りたい数字の範囲を指定します。例えば、サイコロの場合は「1」から「6」なので、その数字を指定するとよいですね。


数字の範囲を変えれば「1」~「9」のサイコロも作り出すことも可能ですよ。これがプログラミングの便利なところですね!
「乱数」ブロックを使ってプログラミングをしてみよう!

師よ!「乱数」ブロックは数字を表示する以外に、どのような使い方ができるのですか?本格的にプログラムを作りたいんですよ!

よし。それじゃあ、「乱数」ブロックをもっと他のブロックと組み合わせてみようね。サイコロをLEDで表示するプログラムを作ってみるよ!
「乱数」ブロックで作られた数字をもとに、サイコロの目をLEDに表示してみましょう。
乱数で1~6の数字を作ってみよう!
サイコロの目は「1~6」の種類がありますね。
それでは「乱数」ブロックを使って、「1~6」の数字を作ってみましょう。

これで「1~6」の数字を乱数で作ることができます。
サイコロの目をLEDで作ってみよう!
数字をそのままLEDに表示するのは味気がないので、サイコロの目としてLEDに表示してみましょう。
サイコロの目は次のようになるように「LED画面に表示」ブロックで作ってください。

乱数で作った数字をもとに、このサイコロの目を表示できることを目指しますよ。
乱数で作った数字を変数に記憶しておこう!
乱数で作った数字を覚えておくための変数を準備します。「変数」ブロックから変数を作成してみましょう。
変数の名前は「サイコロの目」としておきます。

作成した変数「サイコロの目」に乱数の数を設定して、数を覚えておきましょう。

「変数値の設定」ブロックに「乱数」ブロックを組み合わせることで実現します。

作成したブロックは「ずっと」ブロックの中にいれておきます。
比べるブロックを使って乱数の値を確認しよう!
乱数で作成した数字によって、サイコロのLEDを変化させる必要があります。
そのためには「比べる」ブロックを使います。論理ブロック一覧の中にある「比べる」ブロックを選択しましょう。

「比べる」ブロックは「2つの数字を比べるとき」に使うブロックです。

記号 | 数①と数②の比べ方 |
①=② | ①と②が同じ |
①≠② | ①と②が違う |
①<② | ①は②より小さい |
①≦② | ①は②以下 |
①>② | ①は②より大きい |
①≧② | ①は②以上 |
みなさんは、2つの数字をどのように比べたいのかを指定します。これにより、乱数で作られた数が、どの数字なのかを調べることができるのです。

「数①」の部分には「変数」ブロックを入れることが多いのがプログラミングの特徴です。
この後、使い方を説明しますよ。
「比べる」ブロックと「もし」ブロックを組み合わせよう!
「比べる」ブロックは、次のように「もし」ブロックとの合わせて使うことが多いブロックです。

「もし」ブロックは「もし、△△△なら、〇〇〇しよう」というときに使いますね。
今回は「もし、サイコロ変数の数が1 なら、 LEDにサイコロ1を表示 しよう」とプログラムを作ります。

変数「サイコロの目」が「1」~「6」のときに、LEDのサイコロを表示していますね。
プログラム動作の確認をしよう!
ここまで出来たらプログラムが正しく動くことを確認しましょう。サイコロのLEDが順に切り替わりましたね。

サイコロシステムのプログラムの流れ
今回、作成したサイコロプログラムは、次のように作られています。

みなさん、プログラムの流れがわかりましたか?

ブロックを組み合わせることで、いろいろなプログラムを作ることができます。みんなのアイデア次第で、なんでもできるんですよ!
質問コーナー:乱数について気になること

「乱数」について質問あるひとー!
質問:乱数で作ることができる数字はどんなものがあるの?

師よ!「乱数」ブロックで作ることのできるものは「1」や「2」といった数字だけなのですか?「A」や「B」といった文字や、「1.5」や「3.14」といった小数点のついた数字は作れないのですか?

「乱数」ブロックでは「A」などの文字を作ることはできないんだよ。でも「1.5」といった小数点の数字は作り出すことができるよ!
「1」や「2」といった小数点のついていない数字のことを『整数』と呼びます。「乱数」ブロックでは、整数以外にも小数点付きの数字を作ることもできます。

「乱数」ブロックに小数点付きの数字を指定することで、小数点の乱数を作ることもできます。
やってみようコーナー:乱数を使ったプログラミングの巻

それじゃあ「乱数」ブロックを使ったプログラムを作ってみようね!
修行その1:「乱数」ブロックを使ったプログラム

みんな!僕は「火遁」「水遁」「土遁」「雷遁」の4属性の忍術が使える忍者なんだ。その日の気分で修行する忍術を変えるんだけど、毎日どれにしようか決めるのに悩むんだよ。
みんなのプログラムで、今日の僕がどの忍術を修行するかを決められないかな? 僕も一緒に考えるからお願いだよ。
それでは、「B」スイッチを押す度に「乱数」を使って、4つの忍術のうちの1つを選び出すプログラムを作ってあげましょう。
乱数によって選ばれた忍術は、LEDに次のように表示してみましょう。

それでは、みんなプログラムを考えて作ってみてください!

僕もプログラムの形を考えてみたよ!
プログラミングに困ったら、僕のアイデアを参考にしてみてくれよ!
- 「忍術」変数を作成する。
- 「B」スイッチが押されたときに、「忍術」変数に乱数「1~4」を設定する。
- 乱数は「1:火遁 2:水遁 3:土遁 4:雷遁」という意味で扱う。
- 「ずっと」ブロックで「忍術」変数の中を見て、LEDを表示する。

こんな感じでどうかなー? みんな作ってみてよっ!
プログラム内容

プログラムの流れ


これで、毎日の修行に集中できるよ!みんな、ありがとう!
修行その2:プログラム

なんだか、このプログラムは味気がないな。何かが足りないんだ…。何だろう? そうだ、演出だ!演出が足りないんだよ!
「忍術」を決めるまでの『ドコドコドコ・・・、ジャーン!』みたいな、「どれになるんだろう?ドキドキ・ワクワク」みたいな演出が欲しいんだよ!
みなさん、ごめんなさいっ!
作ってもらったプログラムですが、もう少し彼の気に入る形に直してあげてほしいのです。
ドキドキ・ワクワクの演出を、次のように追加してあげてもらえませんか?

みんな、わがまま言ってごめんよ!
僕が修行に全力を出せるように、演出で気持ちを奮い立たせてほしいんだよ!頼んだよっ!
「クルクル演出モード」と「忍術確定モード」の2つの状態が存在するよ。
この2つのモードを、「クルクル演出」変数を使って切り分けてみよう!
- 「クルクル演出」変数を作成する。
- 「クルクル演出」変数は「0:忍術確定モード 1:クルクル演出モード」の意味とする。
- 「A」スイッチが押されたら「1:クルクル演出モード」に設定する。
- 「B」スイッチが押されたら「0:忍術確定モード」に設定する。
- 「ずっと」ブロックでは「クルクル演出モード」の時は「忍術」変数に乱数を設定する。
クルクル演出付きのプログラム


『ドコドコドコドコ・・・ジャーン!火遁』よーーーーし、燃えてきたぜー!今日は全てを燃やし尽くすぜーっ!

micro:bitのプログラムを最初から学びたい子は、ここから始めよう!