【JS応用|初心者向け】【JavaScript入門】Math.random()でランダムな数値を生成する方法を徹底解説

1. 導入:なぜMath.random()が重要なのか

Webサイトやアプリケーションを作っていると、「ランダムな画像を表示したい」「おみくじ機能を作りたい」「パスワードを自動生成したい」といった場面に遭遇します。JavaScriptでこのような「偶然性」を取り入れるために欠かせないのが、Math.random()というAPIです。この関数を使いこなすことで、プログラムに動きや楽しさを加えることができます。

2. 基礎知識:Math.random()の仕組み

Math.random()は、JavaScriptに標準で組み込まれている関数です。この関数を実行すると、0以上1未満の浮動小数点数(小数を含む数値)をランダムに返します。

ここで重要なのは「0以上1未満」という点です。つまり、結果として 0 は出ますが、1 は絶対に出ません。しかし、開発では「1から6までのサイコロの目」や「10から20の間の数字」といった整数が必要になることがほとんどです。そのため、基本的には他の数学関数(Math.floorなど)と組み合わせて使用します。

3. 実装・解決策

実用的なランダム値を得るための3ステップを紹介します。

1. Math.random()で 0 から 1 未満の数を得る。
2. 欲しい範囲の数値を掛け算する(例:10倍すれば 0 から 10 未満になる)。
3. Math.floor()を使って小数点以下を切り捨てる(整数にする)。

4. サンプルプログラム

以下のコードは、1から6までのサイコロの目をシミュレーションする例です。そのままコピーしてブラウザのコンソールなどで実行してみてください。

// 1から6までのランダムな整数を生成する関数
function rollDice() {
  // Math.random()で 0 以上 1 未満の数を作る
  // 6を掛けることで 0 以上 6 未満になる
  // Math.floor()で小数点以下を切り捨てて 0, 1, 2, 3, 4, 5 のいずれかにする
  // 最後に +1 をすることで 1 から 6 の範囲に変換する
  const result = Math.floor(Math.random()  6) + 1;
  
  console.log("出た目は:" + result + " です!");
}

// 関数の実行
rollDice();

5. 応用・注意点

現場で活用する際の重要なポイントが2つあります。

・セキュリティ用途には使わない
Math.random()は「予測可能なランダム」であるため、暗号化や高度なセキュリティが必要なパスワード生成には適していません。その場合は、より安全な crypto.getRandomValues() を使用しましょう。

・範囲の計算ミスに注意
「1から10まで」のような範囲を作りたい場合、よくある間違いは「+1」を忘れることです。
・0〜9を出したい場合:Math.floor(Math.random() 10)
・1〜10を出したい場合:Math.floor(Math.random() 10) + 1
このように、「何個の数字が必要か」を掛けてから、開始位置を足すというルールを覚えておくとバグを防げます。

タイトルとURLをコピーしました