LoginSignup
0
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-10-26

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0