以下のコードで0〜5の中からランダムな値を生成できる
Math.floor(Math.random() * 6);
*6
の意味がわからなかったため調べたことを残しておく。
Math.random()
random関数
は0以上、1未満の浮動小数点の擬似乱数を生成する関数
console.log(Math.random());
// 0.3538826537319486 ← 0以上、1未満
// 1未満のため最大でも0.999999999999・・・
floor
メソッドは引数として与えた数以下の最大の整数を返すためMath.floor(Math.random());
とすると0しか返ってこないことになる。
返ってくる値の個数を増やしたいのであればMath.random()
の値を大きくすればいいため*n
として最大値を大きくする。
そしてMath.random()
にかける数を3倍, 4倍, 5倍と増やしていくごとに、得られる数値の数も3個, 4個, 5個と増えていくため欲しい数値分掛け算をすればいい。
初めの疑問に戻ると6倍することで乱数の最大値を5.9999・・・として0〜5の間でランダムな値を生成しているというのが今回の疑問に対する答え。
応用編 最小値を0以外にする
今までの方法は最小値を0として最大値を設定していたが以下の式によって最小値を0以外にすることも可能。
Math.floor(Math.random() * ( 最大値 - 最小値 + 1 ) + 最小値);
例えば5〜10でランダムの値を取りたい場合、上記の式に当てはめると( 最大値 - 最小値 + 1 )
の部分は6になる。
そして、もし+最小値
の式を入れなかった場合取れる値は0〜5になる。
0〜5の値を5〜10にするためにはどうすればいいかというと最小値を足せばいい。
0, 1, 2, 3, 4, 5
5, 6, 7, 8, 9, 10 //上段の値に5(最小値)を足すと下段の値になる
5〜10に限らずどの範囲であっても上の式に当てはめることで範囲を指定できます。
以上、random関数についてでした!