先ほど初心者向けのJavaScript本を読んだのですが、そこに『■~●までの整数をランダムに表示する方法』として下記のようなコードが描かれていました。
parseInt(Math.random() * ●) + ■;
例としてだしていたのが1~6です。確かに●が1だとこれで問題ないのですが、1以外だと問題があります。例えば、●を0とすると、範囲は0~■-1になります。
正確には下記のような感じになります。
parseInt(Math.random() * (●-■+1)) + ■;
関数化して、■をmin、●をmaxとして表すと下記のようになります。
funtion getRangeRand(min, max){ return (parseInt(Math.random() * (max-min+1)) + min); }
parseIntの部分はMath.floorとしてもかまいません。さらにいうと括弧の位置が少し変わって、『parseInt(Math.random() * (max-min+1) + min)』ではうまくいかない時がありますが、『Math.floor(Math.random() * (max-min+1) + min)』はどんな時でも大丈夫です。どんな時というのは、指定範囲内にマイナスの値がある場合もということです。なぜかというと、parseInt(0.1)とparseInt(-0.1)は両方とも0になりますが、Math.floor(0.1)は0になり、Math.floor(-0.1)は-1になるからです(説明になってない?)。
コメント