前回、小数点以下の値を切り上げるのにMathオブジェクトのceilメソッドを使いました。MathオブジェクトのMathは「数学」という意味です。その名の通り、数値計算に便利なメソッドやプロパティが多く用意されているオブジェクトです。Dateオブジェクトとは異なり、Mathオブジェクトのメソッドを使用するときは、予めインスタンスを生成する必要はないです。次のように書くことで呼び出すことができます。
1 |
Math.メソッド名(引数1,引数2, ...); |
例を挙げると与えられた引数の中から最小値を返すminがあり、minメソッドを使用して、5,6,7,8から最小値を求め変数minNumに代入するには以下のように書きます。
1 |
var minNum = Math.min(5,6,7,8); //minNumの値は5 |
Mathオブジェクトには、乱数を生成するrandomというメソッドも用意されています。今回はこれを利用しておみくじを作成します。
サンプルコードの実行結果はこちら
なんどもF5キー更新をかけると、結果が異なります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<!doctype html> <html> <head> <meta charset="utf-8"> <title>おみくじ</title> </head> <body> <script> var random = Math.random(); if( random < 0.33 ){ document.write("<h1>","大吉","</h1>") }else{ if( random < 0.66 ){ document.write("<h1>","吉","</h1>") }else{ document.write("<h1>","凶","</h1>") } } </script> </body> </html> |
インスタンスメソッドとスタティックメソッド
Dateオブジェクトなどの通常のオブジェクトのメソッドは、インスタンスメソッドを生成しないと使えません。メソッドの結果が、インスタンスに依存するからです。getMonthメソッドはインスタンスに格納されている月の値を返すので、インスタンスごとに値が異なります。そのようなインスタンスに依存するメソッドの事をインスタンスメソッドと言います。それに対して、max,minなどのMathオブジェクトのメソッドは、インスタンスに依存せず、関数のように使えます。そのようなメソッドのことをスタティックメソッドと言います。スタティックメソッドは「オブジェクト名.メソッド名(引数)」の形式で呼び出します。
randomメソッド
Mathオブジェクトのrandomメソッドは、乱数を返すメソッドです。乱数とは、無作為に選ばれる数のことです。英語ではrandom number(ランダム数)と書きます。randomメソッドは実行のたびに0以上1未満の間の無作為な数を返します。このメソッドは引数はいりません。サンプルコードでは、0.33未満、0.66未満、それ以外に均等に3分割しています。この基準値を変更することで、それぞれの結果の出る確率を変更することができます。
Mathオブジェクトのメソッド
主なものは以下に書きます。
メソッド | メソッドの説明 |
---|---|
abs | 絶対値を返す |
exp | eの引数乗の値を返す |
ceil | 小数点以下を切り上げる |
floor | 小数点以下を切り捨てる |
log | 引数の自然対数を返す |
max | 引数の最大値を返す |
min | 引数の最小値を返す |
pow | 第1引数の第2引数乗の値を返す |
round | 引数の小数部分以下第1位を四捨五入した値を返す |
randoom | 0から1の間の乱数を返す |
sin | サイン(正弦)を返す |
cos | コサイン(余弦)を返す |
tan | タンジェント(正接)を返す |
Mathオブジェクトのプロパティ
Mathオブジェクトには、技術計算の定数として使用されるプロパティも用意されています。PIは、円周率を表す読み出し専用のプロパティです。これを利用して、半径10の円の面積を求めるには下記のように書きます。
1 |
var maru = Math.PI * 10 * 10;//円周率×半径×半径 |
指定した範囲の乱数を計算する方法
範囲の整数の乱数が欲しい場合もあります、その時は、
randomメソッドを小数点以下を切り捨てるメソッドと
組み合わせて使います。たとえば、0~9の間の乱数を
変数numに代入したいときは、randomメソッドの値に
10を掛けて、floorメソッドで整数に変換します。
1 |
var num = Math.floor( Math.random() * 10 ); |