JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで指定した範囲内のn個の乱数を生成する方法

本記事では、数値 n と、範囲(最小値・最大値)を表す2つの数値からなる配列を受け取り、その範囲内に収まる n 個のランダムな値を配列として返すJavaScript関数の作成方法を解説します。

実装の考え方

この処理は、以下の手順で実現できます。

  • Math.random() を使って 0 以上 1 未満のランダムな小数を取得する
  • 範囲の幅(最大値 − 最小値)を掛け、最小値を加算することで指定範囲内の乱数へ変換する
  • toFixed() で小数点以下の桁数を揃える
  • includes() による重複チェックを行いながら、必要な個数だけ配列に追加する

コード例

以下が実際のコードです。

const num = 10;
const range = [5, 15];
const randomBetween = (a, b) => {
    return ((Math.random() * (b - a)) + a).toFixed(2);
};
const randomBetweenRange = (num, range) => {
    const res = [];
    for(let i = 0; i < num; ){
        const random = randomBetween(range[0], range[1]);
        if(!res.includes(random)){
            res.push(random);
            i++;
        };
    };
    return res;
};
console.log(randomBetweenRange(num, range));

出力結果

コンソールには次のような出力が表示されます。

[
    '13.25', '10.31',
    '11.83', '5.25',
    '6.28',  '9.99',
    '6.09',  '7.58',
    '12.64', '8.92'
]

これは考えられる出力の一例にすぎません。乱数を使用しているため、実行するたびに結果は変わります。もう一度実行すると、次のように別のランダムな出力が得られます。

[
    '5.29', '7.95',
    '11.61', '7.83',
    '10.56',  '7.48',
    '12.96',  '6.92',
    '8.98', '9.43'
]

コードのポイント

randomBetween 関数では、Math.random() の結果に範囲の幅を掛けてから最小値を加算することで、任意の範囲内の乱数を生成しています。また、toFixed(2) により、すべての値は小数点第2位までに揃えられた文字列として返されます。出力結果の値が引用符で囲まれているのはこのためです。

さらに、randomBetweenRange 関数では includes() メソッドを使って重複を排除しています。for ループのカウンタ i は、新しい値が配列に追加された場合にのみインクリメントされるため、最終的に必ず n 個の一意な乱数が返される仕組みになっています。

  1. JavaScriptで2つの数値の間に乱数を生成する方法

    2つの数値(最小値と最大値)の間でランダムな数を生成するには、Math.random()メソッドを使用します。Math.random()の仕組みMath.random()は、0以上1未満の浮動小数点数を返すJavaScriptの組み込みメソッドです。この戻り値を範囲の幅「(最大値 − 最小値)」に掛け算し、最小値を加算することで、任意の範囲内の乱数を作り出すことができます。サンプルコード以下のコードを実行すると、指定した最小値と最大値の間のランダムな整数を取得できます。<!DOCTYPE html> <html>    <body> &n

  2. JavaScriptでランダムな数値を生成する方法|Math.random()の使い方を解説

    JavaScriptのMath.random()関数は、0以上1未満の範囲でランダムな浮動小数点数を生成するために使用されます。戻り値は「0以上・1未満」であり、1自体は含まれない点に注意してください。この関数を活用すれば、サイコロのようなランダムな整数の生成や、くじ引き・シャッフル処理など、さまざまな場面で乱数を利用できます。Math.random()で1〜10のランダムな整数を生成する方法1から10までのランダムな整数を取得するには、Math.random()の結果に10を掛け、Math.floor()で小数点以下を切り捨てた後、1を加算します。数式で表すと以下のようになります。Math.