JavaScript

レシピ

数値

ランダムな数値を取得する

JavaScriptでランダムな数値(乱数)を取得する方法について解説します。

この記事のポイント

  • Math.randomメソッドで乱数を取得する
  • 取得した乱数に一定の計算を実行することで、指定した最小値〜最大値の間で数値を取得できる

ランダムな数値(乱数)を取得する

ランダムな数値(乱数)はMathオブジェクトrandomメソッドで取得することができます。
randomメソッドはそのまま実行すると0以上〜1未満で値を取得することができます。

以下の例ではfor文で10回ループ処理を行い、その中でMath.randomメソッドを呼び出して乱数を出力します。

コード例

for(var i=0; i<10; i++) {
	console.log(Math.random());
}

// 1回目:0.6975817864395233
// 2回目:0.6568947724831777
// 3回目:0.8304052120867869
// 4回目:0.9284824808384518
// 5回目:0.6026018426644648
// 6回目:0.09600751819166486
// 7回目:0.4452643334725015
// 8回目:0.538898811025009
// 9回目:0.22302123956255215
// 10回目:0.4719975926966786

出力を確認するとたしかに乱数を取得できていますが、このままだとイマイチ使いづらい印象があります。
そこで、「10を掛ける」と小数点数を切り捨てるMath.floorメソッドを使って、乱数の範囲を整数の「0〜9」に設定します。

コード例

for(var i=0; i<10; i++) {
	var random_number = Math.floor( Math.random() * 10);
	console.log( random_number);
}

// 1回目:8
// 2回目:7
// 3回目:0
// 4回目:4
// 5回目:7
// 6回目:2
// 7回目:3
// 8回目:1
// 9回目:0
// 10回目:2

最後に、最小値と最大値を指定して、その範囲内のランダムな数値を取得します。

以下の例では最小値を変数minに、最大値を変数maxに入れてランダムな数値を取得します。
上記のコードと同様にfor文で10回実行を繰り返します。

コード例

var min = 12000;
var max = 14000;

for(var i=0; i<10; i++) {
	var random_number = Math.floor( Math.random() * ((max + 1) - min) + min);
	console.log( random_number);
}

// 1回目:12569
// 2回目:13712
// 3回目:13706
// 4回目:13041
// 5回目:13983
// 6回目:12569
// 7回目:12050
// 8回目:12465
// 9回目:12712
// 10回目:13302

乱数を取得する部分について、まずMath.randomメソッドに対して「((max + 1) – min)」の値を掛けています。
変数の値を当てはめると、「Math.random() * ((14000 + 1) – 12000」になり、もう少し計算を進めると「Math.random() * 14001 – 12000」、最終的に「Math.random() * 2001」になります。

ここまでの計算から、乱数はまず「0以上〜2001未満」の数値を取得することができます。
そこへ、最小値である変数minの値を足すことで、「12000以上〜14001未満」の数値に嵩上げします。

今回は最大値である「14000」まで取得する範囲に含めるため最初に「max + 1」と1加えているところもポイントです。

最後に仕上げとして、取得した乱数に対して小数点以下を切り捨てるためのMath.floorメソッドを実行して整数にします。
以上の計算を実行して、指定した最小値〜最大値の間からランダムな数値を取得することができます。

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

コメントありがとうございます!
運営の参考にさせていただきます。