見出し画像

フロントエンドエンジニアを目指す! 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>

画像1

画像2

画像3

**

今日は以上です。

Twitterではブログに書いていないこともつぶやいているので、ぜひフォローしてください。
https://twitter.com/HAMA3san


ストリートアカデミーで毎月講座を開催中。
https://www.street-academy.com/steachers/198346

note専用コミュニティへの招待について

https://note.mu/hamasan918/n/ne4d98f9db9ec

note専用コミュニティ、作成しました。コミュニティでは質問などを受け付けています。毎月500円となります。

この記事が気に入ったらサポートをしてみませんか?