見出し画像

【Robo Blocksの使い方】ランダムな整数

このコラムでは、教師用指導書で説明しきれなかった内容や、Robo Blocksでのコーティングに使えるテクニックを紹介します。

今回は教師用指導書のTRY14に登場する「ランダムな整数」について補足していきます。
プログラムに初めて触れる方は「ランダムな整数」という概念とその使い方がイメージしにくいと思いますので、詳しく見ていきましょう。


乱数

「ランダムな整数」はプログラミングの世界では「乱数」と呼びます。
試しにGoogleで乱数を検索してみると下記のような特別な検索結果が表示されました。
最小値と最大値を定め、その中からランダムに1つ数を生成してくれるツールです。

スクリーンショット 2021-02-22 10.07.12


専用の検索結果が用意されている事からわかるように、乱数は多く場面で使用することになるポピュラーな概念です。

Robo Blocksで乱数の使い方を学ぶ

実際にRobo Blocksを使いながら、乱数で何ができるのか見てみましょう。

よくあるのが、毎回違った動作をさせたいというケースです。
Pepperは人とコミュニケーションを行うロボットですから、毎回同じ話をしていては飽きられてしまいます。そう言った場合、いくつかのパターンを用意しておき、どれか1つをランダムに実行するという手法を取ることがあります。

例としてTRY14のおみくじを作る課題をみてみましょう。
これは、頭を触られた時に3種類の動きからどれか1つをランダムで実行するというものです。
このプログラムでは、3種類の動きのうち、どれが選ばれるかは等しく1/3の確率になっています。

スクリーンショット 2021-02-22 10.37.49

指導書でご紹介したのはここまでの内容ですが、これではあまりイメージがわかない方もいると思いますので、実社会で目にするパターンを踏まえて少し踏み込んでみましょう。

実際のおみくじは大吉・中吉・小吉の確率が均等ではないですから、確率に傾斜をつけてみます。
この場合にも乱数を活用することができます。

今回は分かりやすく100%をそれぞれに割り振るイメージで設定してみます。
100%を表現したいので、乱数の幅を1~100の100段階に設定します。

スクリーンショット 2021-02-22 18.52.14


これで運勢は1~100までのランダムの数になりました。
ここから確率の傾斜を設定していきます。
今回は大吉が10%、中吉が30%、小吉が60%という設定にしてみます。
これをロボブロックスで表現すると下記のようになります。

スクリーンショット 2021-02-22 19.11.23

運勢は1~100までの数字ですから、大吉は11未満とすると10%の確率で出現することになります。
同様に中吉は10より大きく41未満、小吉は40より大きいに設定しました。
中吉には対応する数字が11~40の30個、小吉には41~100の60個ありますので、それぞれ30%と60%の確率で出現することになります。

この際、11や41などの境界となる値が出た場合に正しく分岐できるか確認が必要です。
現時点で、ロボブロックスには等号付き不等号(≧・≦)がありませんので、値の設定には注意してください。
(これは場合分けと呼ばれる作業です。他の方法もありますので、ifボックスの解説を行う際に説明できればと思います。)

これで単なる分岐ではなく、確率に基づいた分岐を設定できました。
子供達の身近なところではクジ引きなどがこのような確率で設定されています。
乱数に触れていただく際は、子供達自身に身の回りの確率で決まっている物事を探してもらい、それを再現してみるとより理解が深まるのではないかと思います。


まとめ

今回は乱数の使い方について、一歩踏み込んだ内容をご紹介しました。
車を組み立てるような業務用のロボットであれば決まった動きを正確に行えば良いのですが、Pepperのようなコミュニケーションロボットの場合、ある程度のエンターテイメント性が求められユーザーを飽きさせない工夫が必要になります。
ユーザーを飽きさせないことでPepperの利用率も高くなり、作ったプログラムに触れてもらえる回数が増えますので、ぜひ乱数を使ってバリエーションのあるアプリを作ってみてください。

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ソフトバンクロボティクス株式会社 ホームページ
https://www.softbankrobotics.com/jp/

Pepper教育関係者フォーラム
https://pepper-schoolchallenge.com/

Pepper for Education
https://www.softbankrobotics.com/jp/product/education/

STREAMチャレンジ
https://www.softbankrobotics.com/jp/product/academy/stream/

━━━━━━━━━━━━━━━━━━━━Pepperブログ編集部━┛