今日は乱数について勉強していきましょう
今回の記事では
- 乱数とは何か
- Javascriptでの乱数の作り方
- 任意の範囲内での乱数の作り方
- 乱数で作られた数字を整数にする方法
- プログラミングで狙った結果を出す考え方
を学習します!
例を交えてわかりやすく説明しますのでぜひ参考にしてくださいね
乱数とはサイコロのようなもの
乱数というのはサイコロをイメージしてもらうとわかりやすいです
サイコロは1~6の目があります
サイコロを振ってでる目は予想できません
連続で降った場合
規則性なく数字が表れます
これが乱数です
それを疑似的にコンピュータであらわすことができます
Javascriptの乱数 Math.random()メソッド
Math.random()というメソッドを使います
ちなみにMathがオブジェクトでrandom()がメソッドです
以下がその例です

このように0 以上 1 未満の小数を返します
確かにすべて違う数字が結果として表れています
ということで、JavascriptではこのMath.random()を使用して乱数を作成します
特定の範囲の乱数を作る方法
では、次に範囲を指定して乱数を作る方法を説明します
次のサンプルは0~10の乱数を作るプログラムです

一行目で、randomという変数にMath.random()*11で作られた乱数を入れています
0~1(未満)の数字に11をかけています
10をかけると小数第1位が0~9になってしまいます
得られる乱数の範囲が0~10未満になってしまうので11をかけて0~11未満の数字を得ようとしています
0~11の小数点ということですので最大で0~10.99999999…となります
これによって1の位は0~10までとなります
はい、ただしこのままでは小数点以下の数字があります
乱数で作られた数字を整数にする方法
では、小数点以下の数字を切り捨てる方法を確認しましょう
小数点以下を切り捨てるには、Math.floor()メソッドを使います
以下が小数点以下を切り捨てるプログラム例です

Math.floor()の( )内にはいっている数字の小数点を切り捨てるというメソッドです
具体的な数字を入れてもいいですし、()内には変数も入れることができるし、例のようにオブジェクトとメソッド「この場合Math.random()」を入れて、メソッドによってえられる数値にたいして実行することもできます
こうすることでMath.random()をつかって0~10の数字を取り出すことができるようになりました
これで工夫をすればプログラムでサイコロをあらわすこともできるはずです
プログラミングで狙った結果を出す考え方
最後にJavascriptでサイコロを作るプログラムを考えていきながら、
プログラミングで狙った結果を出すというプロセスや考え方について学習しましょう!
以下のサンプルを見てください

*7だと0~6の範囲となってしまいます
では1を足せばいいのではないか
*8にするといいのか
すると、0~7になるだけで解決にはなりませんよね
がでないようにするには
でた答えに常に1を足すようにすれば仮にMath.floor(Math.random()*7)が返す値が0の場合も1になります
では
Math.floor(Math.random()*7)+1とすればいいのか
この場合はMath.floor(Math.random()*7)が6を返した場合に7になってしまいます
要するにMath.floor(Math.random()*7)+1だと1~7になってしまいます
ただ、出したい値に近づいてきましたね
Math.floor(Math.random()*6)+1
とするとどうでしょう
この意味はMath.floor(Math.random()*6)が返す0~5に1を足すということです
要するにこのようなことです
- 0のとき0+1→1
- 1のとき1+1→2
- 2のとき2+1→3
- 3のとき3+1→4
- 4のとき4+1→5
- 5のとき5+1→6 となります
これでサイコロが出る目をプログラミングで表すことができますね
以下はそれをプログラミングで表した例です

最後のサイコロを作るときに思ったような結果がえられないということが起こりました
プログラミングではよく起こります
そんな時は上で示したように一つずつ答えに近づけていくのが正解を出すようにしましょう!
コメント