JavaScriptのMath.random()による乱数生成
このページでは、JavaScriptで乱数を生成するために使われる Math.random()
について詳しく解説します。
Math.random()とは?
Math.random()
は、JavaScriptの Math
オブジェクトに属する関数で、0以上1未満([0, 1))の擬似乱数を生成します。
この関数は、暗号的に安全な乱数を生成するわけではなく、統計的にランダムな数値を得るために使用されます。
基本的な使い方
Math.random()
を使うと、簡単に乱数を生成できます。
console.log(Math.random()); // 例: 0.123456789
生成される数値は、常に0以上1未満の範囲内です。
整数の乱数を生成する方法
整数の乱数を生成するには、生成された数値をスケーリングし、必要に応じて丸める操作を加えます。
例として、0から9までの整数を生成するコードを示します:
const randomInt = Math.floor(Math.random() * 10);
console.log(randomInt); // 例: 7
Math.floor()
を使うことで、スケーリング後の小数部分を切り捨てています。
カスタム範囲の乱数を生成する方法
任意の範囲で乱数を生成する場合、以下の式を使用します:
Math.random() * (max - min) + min
たとえば、1から100までの範囲で乱数を生成するコードは次のようになります:
const min = 1;
const max = 100;
const randomInRange = Math.random() * (max - min) + min;
console.log(randomInRange); // 例: 56.789
この方法を Math.floor()
と組み合わせれば、範囲内の整数も生成できます。
実践的な例
以下は、さまざまなシナリオでの Math.random()
の使用例です。
1. サイコロをシミュレーション
const diceRoll = Math.floor(Math.random() * 6) + 1;
console.log(diceRoll); // 例: 4
2. 配列からランダムな要素を取得
const items = ['りんご', 'みかん', 'バナナ', 'ぶどう'];
const randomItem = items[Math.floor(Math.random() * items.length)];
console.log(randomItem); // 例: みかん
3. ランダムな16進数カラーコードの生成
const randomColor = '#' + Math.floor(Math.random() * 16777215).toString(16);
console.log(randomColor); // 例: #a3e1f1
Math.random()の制約と注意点
Math.random()
には以下のような制約があります:
- 暗号的に安全ではない: セキュリティが必要な場面(例: トークン生成)では、
window.crypto.getRandomValues()
を使用する必要があります。 - 完全にランダムではない: 擬似乱数生成アルゴリズムに基づいており、決定論的です。
たとえば、セキュリティに強い乱数を生成する場合は以下のように記述します:
const array = new Uint32Array(1);
window.crypto.getRandomValues(array);
console.log(array[0]); // セキュアな乱数
これで、JavaScriptにおける乱数生成についての詳しい解説は終了です。
ページの先頭に戻る