回答編集履歴

1 文言修正

退会済みユーザー

退会済みユーザー

2017/09/12 13:57  投稿

Math.floor( Math.random() * (max - min + 1) ) + min;
数字適当に当てはめてみてはどうですか?
例えばmax = 10 , min = 2
そうすると単純に
Math.floor( Math.random() * (9) ) + 2;
となり
ランダム値が最低の0でも 最後に2を足してるため最低でもmin以上の値になる。
ランダム値が最高(ではないけど)の0.9でも、9*0.9=8.1 これを切り捨てして 8 で最後に2を足して10でmax以下になる。
max - min + 1 でminを引いてるのは最後に+minをしてるから
ここで引かないと最大値が12になってしまう。
+1はランダム値が1未満だからそのままで掛けて切り捨てちゃうと
最大値にどうしてもならないので足しといて上げる。
最大値にどうしても届かないので足しといて上げる。
何回か当てはめながらやったらわかったので試してみてはいかがでしょうか

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る