Help us understand the problem. What is going on with this article?

random関数でランダムな値を生成する

以下のコードで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関数についてでした!

take95
日々の学習の中での気付きや発見をアウトプットできたらと思ってます! 発信をすることに対する苦手意識を克服するためにも日々訓練!精進していきます!
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away