あーりーです。
前回は、JavaScriptでランダムな数字をつくる方法を見てきました。
きょうのテーマは、ランダムな数字の最大値の決め方です。
どんな仕組みで最大値が決まるのかを見ていこうと思います。
まず、前回のおさらになりますが…
0から10までのランダムな整数を表示させるJavaScriptはこちらです。
<html>
<head>
</head>
<body>
<script>
// 変数aを使う宣言
var a;
//変数aにランダムな整数を代入
a=Math.floor(Math.random()*11);
//aを画面に表示
document.write(a);
</script>
</body>
</html>
※少しでもわかりやすいように、JavaScriptのところは丁寧に、HTMLの部分は究極にあっさりと書いています
この緑色の部分が、0から10までのランダムな整数をつくる部分です。
a=Math.floor(Math.random()*11);
おさらい
では。
この部分の内容を、再確認しておきます。
ランダムな数字を作る
まず以下の赤い部分で、ランダムな数字を作っています。
a=Math.floor(Math.random()*11);
このときに作られるランダムな数字は、整数の1より小さいものです。
たとえば…
0.427940555770828
とか
0.6279808447799727
とか
0.25192833237803625
などです。
ぜんぶ、1より小さい数です。
このままだと、ランダムな整数は作れません。
そこで、ある程度の数字をかけ算します。
最大値より一つ大きい数字をかける
ここが今回のキモですね。
さっき作ったランダムな数値に、ある程度の数をかけます。
たとえば、0から10までのランダムな数字を作りたい場合、以下の赤い部分のように、11をかけ算します。
a=Math.floor(Math.random()*11);
最大値を10にしたい場合、そのまま10をかけるのではなく、それより一つ大きい11をかけるのがポイントです。
11をかけると11より小さい数値になる
かけ算の結果は、かけた数字(今回の場合は11)よりも必ず小さくなります。
なぜなら…
さっき「Math.random()」によって作られたランダムな数字は、かならず1より小さい数字だからです。
11に、1より小さい数字をかけると、11より小さくなりますよね。
例
1より小さい数字は0.00001とか0.99999とかいろいろありますが、今は最大値の話をしているので、なるべく大きい0.99999を例にとってみます。
たとえば、こんな感じです。
↓
0.99999×11
計算結果は、
10.99989
です。
11より小さいです。
ランダムに作られた数値がどんなに大きくても、それが1より小さい数値である以上、かけ算の結果が11に達することはありません。
小数点以下を切り捨てる
あとは、小数点以下を切り捨てます。
それが、この赤い部分です。
a=Math.floor(Math.random()*11);
たとえば、
0.99999×11=10.99989
この計算結果の小数点以下を切り捨てると、「10.99989」が「10」になります。
11よりも一つ小さい整数が出来上がりました。
まとめ
というわけで。
ランダムの最大値は、赤い部分の数字よりも、一つ小さい整数になることがわかります。
a=Math.floor(Math.random()*数字);
今回は、これでおしまい~。
JavaScriptの記事は、この記事も含めて「初心者のための超わかりやすいJavaScript入門」にまとめてあります。よろしければご覧ください。