SRIAエディターのわかやなぎです。エディターが学ぶ初めてのプログラミング、第3回をお送りします!
前回(第2回)は、JavaScriptを使ってスロットゲームを作りました。関数を使ってランダムに画像を表示させ、スロットの絵柄を動かしました。
第3回は、その際に使ったMathオブジェクト関数の2つを調べた記事です。
Mathオブジェクトって?
数値に関わることを、よしなにしてくれるオブジェクト。
小数点の切り上げ・切り捨てから、平方根の計算、sin/cos/tanの計算まで!
前回のスロットゲームで使用したのは、以下の2つ。
- Math.random
- Math.floor
どんな動きをするか、を以下にまとめました。
Math.random関数
Math.random関数は、0から1未満の間で、ランダムな数字を生成する関数です。
実行すると、こんな風に数値が得られます。
1 2 3 4 5 6 7 |
>Math.random(); 0.08101679106330328 >Math.random(); 0.9850375356721648 >Math.random(); 0.3323284928910797 ... |
Math.floor関数
Math.floor関数は、引数(与えられた数)の小数点を切り捨てて整数にする関数です。
上記のMath.random関数で生成された数値を、Math.floor関数で処理すると、
1 2 3 4 5 6 |
>Math.floor(0.08101679106330328); 0 >Math.floor(0.9850375356721648); 0 >Math.floor(0.3323284928910797) ; 0 |
出力される数値が0から1未満なので、切り捨てると0にしかなりません。
今回のスロットゲームで出力したかったのは、整数1から3のいずれか。
これを実現させるために、2つの関数を組み合わせて加工しました。
1 |
Math.floor(Math.random() * 3) ; |
ランダム生成された数値を3倍すると、得られるのは0から2のいずれか。
ほしい数値は1から3なので、出た数値に+1すると・・・
1 2 3 4 5 6 |
>Math.floor(Math.random() * 3) +1; 1 >Math.floor(Math.random() * 3) +1; 3 >Math.floor(Math.random() * 3) +1; 3 |
できたー!これで1から3までの整数が得られるようになりました。
整理すると、以下のようになります。
1 2 |
Math.floor(Math.random()*(n+1)); // 0からnまでの整数がほしい時 Math.floor(Math.random()*n )+1; //1からnまでの整数がほしい時 |
以上、Math.floorとMath.randomについてお送りしました。