🖖

[JS]乱数を作成してサイコロ機能を実装する

2024/08/15に公開

JavaScriptには、乱数を生成するための便利なメソッドとしてMath.random()が用意されています。このメソッドと他のMathメソッドを組み合わせることで、さまざまな用途に応じた乱数を簡単に生成することができます。

1. Math.random()の基本

Math.random()は、0以上1未満の範囲でランダムな浮動小数点数を生成するメソッドです。例えば、以下のように使います。

const randomNumber = Math.random();
console.log(randomNumber);

このコードを実行すると、毎回異なる0以上1未満の数値がコンソールに表示されます。

2. 整数の乱数を生成する

0以上1未満の数値をそのまま使うことはあまり多くなく、通常は整数を生成したい場合がほとんどです。これを実現するために、Math.floor()メソッドを使用します。

Math.floor()は、小数点以下を切り捨てて、整数部分だけを返すメソッドです。例えば、Math.random()で生成された数値を10倍してからMath.floor()を使うと、0から9までのランダムな整数が得られます。

const randomInteger = Math.floor(Math.random() * 10);
console.log(randomInteger);

このコードを実行すると、0から9までのランダムな整数が表示されます。

3. 任意の範囲の乱数を生成する

特定の範囲で乱数を生成したい場合、少し工夫が必要で単純な積の値では生成で
きません。例えば、5から15までのランダムな整数を生成する場合、次のようにコードを書きます。

const min = 5;
const max = 15;
const randomInRange = Math.floor(Math.random() * (max - min + 1)) + min;
console.log(randomInRange);

このコードでは、Math.random() * (max - min + 1)によって0からmax - minまでの値を生成し、minを加えることで範囲を5から15にシフトさせています。

4. サイコロの目をシミュレートする

サイコロの目をシミュレートしたい場合、1から6までの整数をランダムに生成します。これは以下のように実装できます。

const diceRoll = Math.floor(Math.random() * 6) + 1;
console.log(diceRoll);

このコードを実行するたびに、1から6までのランダムな整数が表示され、サイコロを振った結果のように見えます。

5. Math.floor()の代わりにMath.ceil()Math.round()を使う

乱数生成ではMath.floor()がよく使われますが、他にもMath.ceil()Math.round()を使って異なる結果を得ることができます。

  • Math.ceil(): 小数点以下を切り上げます。たとえば、1.22になります。
  • Math.round(): 四捨五入します。たとえば、1.52になり、1.41になります。

例: Math.ceil()を使ったサイコロ

const diceRoll = Math.ceil(Math.random() * 6);
console.log(diceRoll);

このコードはサイコロの目をシミュレートするもので、Math.ceil()を使うことで、1から6の範囲の数を生成しています。

まとめ

Math.random()Math.floor()を組み合わせることで、さまざまな範囲や用途に応じた乱数を生成することができます。これらの基本を押さえておくことで、JavaScriptでの乱数生成が可能となります。

Discussion