Scratchにある「乱数」って何かな?乱数の使い方を知りたいな。どんなときに乱数を使えるのか教えてほしいな。
こんな疑問にお答えします。
- Scratchの「乱数」について解説
- 乱数の使い方を詳しく解説
- 乱数が使われている3つの例を紹介
乱数を理解することができたらトランプのシャッフルやサイコロの実現、確率に応じてアイテムをゲットできる仕組みが作れますよ。
そんな私は大手メーカーでソフトウェアエンジニアを6年以上経験していまして、バリバリプログラムを書いていました。
この私が解説します。
Scratchの「乱数」について解説
乱数とは?
「乱数」とはランダムな数のことでプログラムを実行するたびに結果が変わる値のことです。ランダムとは規則性がなく予測が不可能な状態のことです。
普通のプログラムは毎回必ず同じ処理結果になりますが、乱数は実行するたびに値が変わります。
乱数を使った例
わかりやすい例だと、ロールプレイングゲームの主人公です。
主人公が攻撃するとたまに「会心の一撃!」とか「急所にあたった!」とかなりますよね。
これは乱数を発生させてたまに「会心の一撃!」が出るようになっています。
このように、「乱数」とはランダムな数のことでプログラムを実行するたびに結果が変わる値のことです。
乱数の使い方を詳しく解説
乱数の基本的な使い方
まずは乱数の基本的な使い方を解説します。
乱数は演算の「1から10までの乱数」ブロックを使用して発生させます。これは1~10のどれかの数字がランダムに選ばれるという意味です。
使い方は簡単です。このブロックを編集エリアに置いてクリックするだけです。
クリックすると数字が表示されます。今回は10ですが、
もう一度クリックすると、値が変わります。
基本的な使い方はこのとおりで、演算の「1から10までの乱数」ブロックを使用します。
乱数の実用的な使い方
ただ、これだけでは実用的ではないので、おみくじのプログラムを例に具体的な使い方を解説します。
まず、出来上がったプログラムがこちらです。
プログラムを実行すると結果がわかります。
もう一度実行してみると、結果が変わります。
では、プログラムを解説します。
まず、発生する乱数を1~7にします。これはおみくじの種類分です。そして乱数を変数「乱数」に保存します。
そして、その乱数を基にどの結果を表示するか決めます。変数「乱数」が1なら大吉、2なら吉のように全パターン決めます。
これで完成です。実行してみると、実行するたびに結果が変わります。
このように乱数と「もし」の命令ブロックを組み合わせれば、ランダムな結果になるプログラムが作れますよ。
乱数が使われている3つの具体例
おみくじ以外にもプログラムの中で乱数が使われている例を紹介します。
乱数が使われている例を知っておくと自分でプログラムを作るときの参考になりますよ。
【基本的な乱数】サイコロ
パーティーゲームなどにサイコロを振ってすごろくのように進めるゲームがありますよね。あのサイコロにも乱数が使われています。
Scratchでサイコロを実現する方法は次のとおりです。
- サイコロの各目のスプライト(コスチューム)を作る
- 1~6の乱数を発生させる
- 「発生した乱数」番目のコスチュームに変更する
上記のとおりです。
実際に作ったスプライト(コスチューム)はこんな感じです。
そしてプログラムは次のとおりです。とてもシンプルで、「発生した乱数」番目のコスチュームに変更することでサイコロを振ったような動きを作ることができます。
プログラムを実行するとこんな感じです。
ただ、これだとサイコロ感が無いので、もうちょっと改良してサイコロが転がっている感じを演出したいと思います。
例えばこんな感じです。プログラムを実行するとマウスをクリックするまでサイコロの目が変化し続けます。
このプログラムはこちらです。考え方はシンプルで、マウスがクリックされるまでコスチュームをランダムに変更し、表示し続けるだけです。
このように乱数と「コスチュームを◯◯にする」ブロックを使えば、サイコロを振ったような動作をプログラミングすることができます。
【乱数と確率】ゲームのアイテム取得確率
RPGなどのゲームではクリアするとアイテムを貰えることがありますね。
ここにも乱数が使われています。
アイテムにはよく出るアイテムもあれば、めったに出ないアイテムもあります。
そういったアイテムには出現確率が設定してあります。
例えば次のとおりです。
- 回復薬:40%
- 鉄の塊:20%
- 弱い剣:20%
- 強い盾:15%
- 金の塊:5%
これを乱数を使って実現する一番簡単な方法は次のとおりです。
- 1~100までの乱数を発生させる
- 乱数が 1~ 40の場合:回復薬
- 乱数が41~ 60の場合:鉄の塊
- 乱数が61~ 80の場合:弱い剣
- 乱数が81~ 95の場合:強い剣
- 乱数が95~100の場合:金の塊
こんな感じで、確率に応じて乱数の値を割り振れば簡単に確率を設定することができます。
このように乱数を使えばアイテムの出現確率を設定することができます。
【リストと乱数】トランプのシャッフル
トランプでカードをシャッフルするときにも乱数が使われています。
一番簡単な方法は次のとおりです。
- トランプ53枚を1番目~53番目まで順番に並べる
- 交換元を1~53番目の中からランダムに選ぶ
- 交換先を1~53番目の中からランダムに選ぶ
- 交換元と交換先を入れ替える
- 以上を好きな回数繰り返す
上記の通りです。図にすると次のようなイメージです。
そして、実際に作ったプログラムはこちらです。100回シャッフルしています。
これはScratchの「リスト」を使用すると簡単に作ることができます。
プログラムを実行してみると順番に並んでいるトランプが、
シャッフルされます!(どことどこを交換したのかわかるように交換元と交換先を表示しています)
このように乱数を使えばカードをシャッフルすることができます。
以上、乱数が使われている3つの例を紹介しました。
まとめ
本記事のおさらいです。
- 乱数とはランダムな数のことでプログラムを実行するたびに結果が変わる値のこと
- ランダムとは規則性がなく予測が不可能な状態のこと
- 乱数を使うには「1から10までの乱数」ブロックを使用する
- 乱数と「もし」の命令ブロックを組み合わせれば、ランダムな結果になるプログラムが作れる
- 乱数はゲーム性を出したい場面で使われることが多い
上記の通りです。
乱数を使いこなせるようになるとゲームを作るときに便利ですよ。
また、その他のScratchに関する解説は下記の記事をご覧ください。使い方だけでなく本質がわかるように解説しています。
では、Scratchを楽しんでください(^_^)/~