JavaScript入門 練習問題 37:組み込みオブジェクト:Mathオブジェクトによる乱数生成
次のコードの実行結果としてあり得る範囲で、正しいものはどれですか?
```javascript
Math.floor(Math.random() * 3) + 1
```
- 常に1から3までのいずれかの整数が返される
- 常に0から3までのいずれかの整数が返される
- 常に1から4までのいずれかの整数が返される
- 常に0から2までのいずれかの整数が返される
- 常に0から4までのいずれかの整数が返される
Qraftユーザーの成績:正答率 70%(7/10回正解)
正解と解説を見る
正解:常に1から3までのいずれかの整数が返される
Math.random()は0以上1未満の小数を返し、これに3を掛けてMath.floor()で切り捨てることで0〜2の整数になり、最後に1を足すため1〜3の整数が正解です。
【正解の理由】
Math.random() * 3 は「0以上3未満」の小数を生成し、Math.floor() で小数点以下を切り捨てると「0, 1, 2」のいずれかになります。最後に1を加算しているため、結果は「1, 2, 3」のいずれかの整数になります。
【不正解の理由】
• 「常に0から3までのいずれかの整数が返される」は誤り。1が足されているため0にはならない
• 「常に1から4までのいずれかの整数が返される」は誤り。Math.random()は1を含まないため4にはならない
• 「常に0から2までのいずれかの整数が返される」は誤り。1を加算しているため結果の範囲が異なる
• 「常に0から4までのいずれかの整数が返される」は誤り。計算結果の範囲と全く一致しない