フロントエンドエンジニアを目指す! JavaScript講座(6)指定範囲のランダムな整数を出す
前回は、1から6のサイコロの目を出す方法を勉強しました。
今回は応用編として、1始まりではなく、指定範囲の値を整数で出す方法を勉強します。
前回の復習
まずは前回の復習です。
前回と同じく、ランダム関数を使います。
point:
randum関数は、0以上1未満の値を表示する
小数点以下は不要なため、floor関数で削除する
そのため、整数を出す場合は、桁を1つ繰り上げなければいけません。
また、前回のサイコロの目を出すですが、
randum関数で出したい数の数を掛けました。
これで0以上6未満の性質が出ます。
例えばですが、0.0099に6をかけると、0.0594が出ます。
floor関数で小数点以下を切り捨てると、0です。
また、0.99に6を掛けると、0.594
floor関数で小数点以下を切り捨てると、5です。
このままだと0から5の整数が出ることになります。
そこで、最後に1を足します。
これで1から6の数が出るようになります。
指定範囲のランダムな整数を出す
今回の応用では、30から50の値を出してみます。
まず、最小値についてです。
例えばですが、0.0001に50をかけると、0.005が出ます。
floor関数で小数点以下を切り捨てると、0です。
しかし今のままだと0-49までの値が出てしまいます。
そこで、最小値は30になるので、30を足す処理が必要です。
こうすると、0.0xxxが出ても、
30が最小値になります。
次に最大値を考えます。
今のままだと0-49までの値が出てしまいます。
そこで、掛ける数を変更します。
30は加算されるため、
50-30=20
とします。
0-20の範囲をrandum整数で出します。
20/0.99(予測上のざっくりとした最大値)=20.202020……
です。
20.202020……なので、21です。
randum関数に21を掛けます。
すると、
最小値ざっくり計算 0.001 * 21 = 0.021 ->0
最大値ざっくり計算 0.999 * 21 = 20.979 -> 20
が出ます。
最後に指定範囲の最小値の30を足すと最小値と最大値がそれぞれ
最小値ざっくり計算 0.001 * 21 = 0.021 ->0 0 + 30 = 30
最大値ざっくり計算 0.999 * 21 = 20.979 -> 20 20 + 30 = 50
となります。
ざっくりでいいので、最小値と最大値を具体的に計算するとわかりやすいですよ。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JavaScript講座sampleテキスト6</title>
</head>
<body>
<h1>指定範囲のランダムな整数を出す(30-50)</h1>
<button type="button" onclick="getRandumNumber()">指定範囲のランダムな整数</button>
<script>
function getRandumNumber() {
var ranNum = Math.floor(Math.random() * 21) +30 ;
alert(ranNum);
}
var testText = '整数です';
document.write(testText);
</script>
</body>
</html>
**
今日は以上です。
Twitterではブログに書いていないこともつぶやいているので、ぜひフォローしてください。
https://twitter.com/HAMA3san
ストリートアカデミーで毎月講座を開催中。
https://www.street-academy.com/steachers/198346
note専用コミュニティへの招待について
https://note.mu/hamasan918/n/ne4d98f9db9ec
note専用コミュニティ、作成しました。コミュニティでは質問などを受け付けています。毎月500円となります。
この記事が気に入ったらサポートをしてみませんか?