JavaScriptで乱数を生成する場合、たいていはMath
関数を使います。
具体的にはMath.random()
という関数を使うことになります。
Math.random()
このままだと、0~1の間の少数がランダムで生成され、桁数も多くて扱いづらいです。
そこで、以下のように乱数の幅を固定します。
Math.floor(Math.random()*6)+1
Math.random()
で生成された数値に6を掛けることで、通常生成される0~1の少数が0~5の幅に広がります。
あとは、Math.floor()
で小数部分を切り捨てます。
具体的には以下のような感じ。
- 0.1→0.6→0
- 0.2→1.2→1
- 0.3→1.8→1
- 0.4→2.4→2
- 0.5→3.0→3
- 0.6→3.6→3
- 0.7→4.2→4
- 0.8→4.8→4
- 0.9→5.4→5
サイコロなんかの場合は1~6の出目がありますので、Math.random()
を6倍し、0~5になる揺れ幅に+1して1~6とします。
要するに、6分の1の乱数を生成したい場合は6倍、100分の1の乱数を生成したい場合は100倍にすれば良いわけです。
あとは、生成される乱数が0から始まることを考慮し、実際に使いたい値となるよう加減することになります。
たまに使うときに毎回調べてる気がするのでメモ。