JavaScript プログラミング
前へ 目次へ 次へ 

 8.数学関数

 数学関数はJavaスクリプトで、Mathオブジェクトとして用意されている。三角関数(sin, cos, tan)などの関数がメソッドとして用意されている。

関数 メソッド 一般記述 使用例 結果
三角関数 sin sin 90゜ Math.sin(45*Math.PI/180);
cos cos 90゜ Math.cos(45*Math.PI/180);
tan tan 90゜ Math.tan(45*Math.PI/180);
平方根 sqrt √2 Math.sqrt(2);
べき乗 pow 24 Math.pow(2,4);
対数 log loge10 Math.log(10);
eのべき乗 exp e2 Math.exp(2);
絶対値 abs |-5| Math.abs(-5);
整数化
(大きい整数)
ceil   Math.ceil(10.1);
Math.ceil(-10.1);
整数化
(四捨五入)
round   Math.round(10.4);
Math.round(10.5);
整数化
(小さい整数)
floor   Math.floor(10.1);
Math.floor(-10.1);
最大値 max   Math.max(1,2,3,4,5);
最小値 min   Math.min(1,2,3,4,5);
乱数(0≦r<1) random   Math.random();

 ほかに、よく使われる定数(計算値)がプロパティとして用意されている。

定数 プロパティ 一般記述 使用例
円周率 PI π Math.PI
自然対数の底e E e Math.E
10の自然対数 LN10 loge10 Math.LN10
2の自然対数 LN2 loge2 Math.LN2
eの常用対数 LOG10E log10e Math.LOG10E
eの対数(底を2とする) LOG2E log2e Math.LOG2E
2の平方根 SQRT2 √2 Math.SQRT2
2の平方根の1/2 SQRT1_2   Math.SQRT1_2


(1) 乱数
 乱数は規則性のない数列、すなわち、でたらめな順番で現れる数であり、その数の現れる割合はほぼ同じとなる。
 いろいろな言語では、乱数を得るための命令や関数が用意されているが、多くは計算によって求められた乱数であり、正確な乱数とはいえず、一般に擬似乱数と呼ばれている。
 Javaスクリプトにも乱数は用意されており、Mathオブジェクトのrandomメソッドで0から1未満の範囲の得ることができる。

 特定範囲の乱数
 ある範囲の整数の乱数を求めるには、次の式を使う。

Math.floor((upper - lower + 1) * Math.random() + lower)

問題 ジャンケンのプログラムでコンピュータが出す手を乱数によって決定する。グーを1、チョキを2、パーを3とするとき、1から3までの乱数を発生させることになる。そこで次のようなプログラムを作成した。

HTMLリスト [[jsrei11.html]]

<HTML>
<HEAD>
<TITLE>ジャンケン</TITLE>
</HEAD>
<BODY><SCRIPT language="JavaScript">
<!--
function ransuu(form1){
    form1.disp.value = ""    //表示エリアのクリア
    jk = new Array("", "グー", "チョキ", "パー");
    for(n = 0; n < form1.kaisu.value; ++n){
        rnd = Math.floor((3-1+1) * Math.random() + 1);
        form1.disp.value = form1.disp.value + jk[rnd] + "\n";
    }
}
//-->
</SCRIPT>
<P>ジャンケン</P>
<FORM>
<INPUT size="10" type="text" name="kaisu"> 回
<INPUT type="button" value="乱数発生" onclick="ransuu(this.form);"><BR>
<TEXTAREA rows="10" cols="50" name="disp"></TEXTAREA>
</FORM>
</BODY>
</HTML>

ジャンケン サンプル


 グー、チョキ、パーがでたらめな順序で現れているだろうか。さらにグー、チョキ、パーがほぼ同じ回数ずつ現れているだろうか。

@ このままでは、グー、チョキ、パーがそれぞれ何回かわかりにくいので、現れた回数をalertで表示するようにプログラムを変更しなさい。

 


 実行してみると次のようになった。
 ただし、乱数なので必ずこのような結果になるとは限らない。
10回実行
回数 グー(回) チョキ(回) パー(回)
1回目 3 4 3
2回目 4 4 2
3回目 3 4 3
4回目 3 3 4
5回目 3 3 4
6回目 1 3 6
7回目 2 3 5
8回目 1 4 5
9回目 3 2 5
10回目 1 3 6
24 33 43
100回実行
回数 グー(回) チョキ(回) パー(回)
1回目 32 33 34
2回目 32 34 34
3回目 30 40 40
4回目 32 28 40
5回目 34 36 30
6回目 36 20 44
7回目 31 30 39
8回目 32 41 27
9回目 36 34 30
10回目 31 38 31
326 334 349

 ばらつきはあるが出現の割合は、ほぼ33%程度であるが、実行回数が少ないとばらつきが大きくなっている。

A グー出現の割合が50%、チョキとパーがそれぞれ25%程度になるようにプログラムを変更しなさい。
 ヒント:1から4の乱数を発生させる。各値は25%程度となる。ここで、4のときは1とすれば.....


 実行してみると次のようになった。
 ただし、乱数なので必ずこのような結果になるとは限らない。
10回実行
回数 グー(回) チョキ(回) パー(回)
1回目 7 0 3
2回目 6 3 1
3回目 5 4 1
4回目 6 3 1
5回目 3 4 3
6回目 6 3 1
7回目 6 2 2
8回目 4 4 2
9回目 7 2 1
10回目 7 1 2
57 26 17
100回実行
回数 グー(回) チョキ(回) パー(回)
1回目 43 27 30
2回目 49 27 24
3回目 49 23 28
4回目 52 16 32
5回目 51 23 26
6回目 45 22 33
7回目 47 29 24
8回目 45 27 28
9回目 49 23 28
10回目 47 27 26
477 244 279


前へ 目次へ 次へ 
 JavaScript プログラミング Copyright © 2003 Hiroshi Masuda 

 

 

inserted by FC2 system