第11回 「ランダムに文字を表示する」
今回はランダムに文字列(挨拶文)を表示させてみます。プログラムのテーマとしては簡単なものですが、簡単ゆえに、いろいろな方法があります。今回の方法は条件分岐命令のifを使って「力技」で処理するというものです。
まず、ランダムに文字列を表示させますが、まずは4種類の文字列を表示させることにします。ランダムに文字列を表示させるには「乱数」を使います。乱数はMath.random()で得ることができます。ただし、得られる値は0以上1未満になります。おまけに小数値です。1、2、3、4の乱数値が簡単に得られれば楽なのですが、それができませんので4倍して整数部分だけ使うことにします。
乱数を得るには
n = Math.random();
となり、これを4倍にするには
n = Math.random() * 4;
となります。これで0以上4未満の小数値が得られます。次にif命令ですが、これは
if (条件式) 条件を満たしたときの処理
と記述します。条件式は
a == b aとbが等しい(内容が同じ)
a != b aとbが等しくない
a < b a が bより小さい
a <= b a が bより等しいか小さい
a > b a が bより大きい
a >= b a が bより等しいか大きい
となります。まずは、これでプログラムを作成してみましょう。
<html>
<head>
<title></title>
</head>
<body>
<script language="JavaScript"><!--
n = Math.random() * 4;
if (n > 0) document.write("こんにちは<br>");
if (n > 1) document.write("いい天気<br>");
if (n > 2) document.write("みたいですね<br>");
if (n > 3) document.write("おしまい<br>");
// --></script>
</body>
</html>
一見すると問題なさそうなプログラムですが実行してみると期待通りに動作したり、しなかったりします。ひどい時は
こんにちは
いい天気
みたいですね
おしまい
のように全部表示されてしまいます。これは、例えばnが3.555だったら全部のif命令の条件を満たしてしまいます。nが1.5だと上2つのif命令の条件を満たしてしまいます。
これでは困ってしまいます。どうしたらよいのでしょうか。
1つは条件を変更する、もう1つはelseを使う、という方法があります。これについては次回、説明したいと思います。