JavaScript で 2つの数字の間の乱数を生成する

Moataz Farid 2023年10月12日
  1. JavaScript で 1 とユーザ定義値の間の乱数を生成する
  2. JavaScript で 2つの数字の間の乱数を生成する
JavaScript で 2つの数字の間の乱数を生成する

このチュートリアルでは、JavaScript で 2つの数字の間に乱数を生成する方法を学びます。0.0 から 0.999 の間の浮動小数を生成するメソッド Math.random() を使用します。

JavaScript で 1 とユーザ定義値の間の乱数を生成する

乱数生成器 Math.random() を用いて JavaScript で乱数を生成するには、生成した浮動小数点数に生成したい最大値を乗じることで乱数を生成します。Math.random()* max は 0 から max までの間の乱数を生成します。

function generateRandom(max) {
  return Math.random() * max;
}

console.log('1st try: ' + generateRandom(5));
console.log('2nd try: ' + generateRandom(5));
console.log('3rd try: ' + generateRandom(5));
console.log('4th try: ' + generateRandom(5));

出力:

1st try: 3.3202340813091347
2nd try: 1.9796467067025836
3rd try: 3.297605748406279
4th try: 1.1006700756032417

整数形式の結果だけを得たい場合は Math.floor() を用いることができます。

console.log(Math.floor(1.02));
console.log(Math.floor(1.5));
console.log(Math.floor(1.9));
console.log(Math.floor(1));

出力:

1
1
1
1

Math.floor() メソッドを用いると、ランダムに生成された整数を得ることができます。

function generateRandomInt(max) {
  return Math.floor(Math.random() * max);
}

console.log('1st Integer try: ' + generateRandomInt(9));
console.log('2nd Integer try: ' + generateRandomInt(9));
console.log('3rd Integer try: ' + generateRandomInt(9));
console.log('4th Integer try: ' + generateRandomInt(9));

出力:

1st Integer try: 8
2nd Integer try: 5
3rd Integer try: 7
4th Integer try: 0

JavaScript で 2つの数字の間の乱数を生成する

また、ユーザ定義の最小値を設定したい場合は、Math.random() * max の式を Math.random() * (max-min)) +min に変更する必要があります。この式を用いて、戻り値は min から max の間の乱数となります。

function generateRandomInt(min, max) {
  return Math.floor((Math.random() * (max - min)) + min);
}

console.log('1st min and max try: ' + generateRandomInt(2, 9));
console.log('2nd min and max try: ' + generateRandomInt(2, 9));
console.log('3rd min and max try: ' + generateRandomInt(2, 9));
console.log('4th min and max try: ' + generateRandomInt(2, 9));

出力:

1st min and max try: 6
2nd min and max try: 2
3rd min and max try: 8
4th min and max try: 3

ランダムジェネレータのスコープに max 値を含めたい場合は、式を (Math.random() * (max+1 - min)) +min に変更する必要があります。max-min に 1 を加えると、範囲内に最大値が含まれ、Math.floor() に 1 を加えると最大値が範囲内に含まれ、Math.floor() は常にこの値が max を超えないことを保証します。

function generateRandomInt(min, max) {
  return Math.floor((Math.random() * (max + 1 - min)) + min);
}

console.log('1st min and max included try: ' + generateRandomInt(2, 9));
console.log('2nd min and max included try: ' + generateRandomInt(2, 9));
console.log('3rd min and max included try: ' + generateRandomInt(2, 9));
console.log('4th min and max included try: ' + generateRandomInt(2, 9));

出力:

1st min and max included try: 3
2nd min and max included try: 7
3rd min and max included try: 9
4th min and max included try: 6

関連記事 - JavaScript Number