乱数が使いたい! Java Scriptと奮闘中

Java Scriptのお勉強にはいっても、ちょびっとずつしかすすまない、悲しい見習ですが、やっとこさで乱数の利用まできました。

エクセルでもrandom()という関数がありますが、やっぱりありましたJava Scriptにもランダム。うーん、ランダム!

算術計算を扱うMathオブジェクトのひとつとしてrandamメソッドがあります。このメソッドを使うと0以上1未満の乱数を返してくれます。

エクセルといっしょ。これだと、小数点以下のずらーという数字が返されてくるので、このままだと使いにくい。順番とかを決めたり、くじ引きしたり、一定数以内の整数のみで乱数が必要なときが多いです。
学校の席決めとか、福引とか、そういうことしか思い当たらない見習ですが…。

ということで、たとえば100未満の整数の中から乱数がほしいときは、Math.random()で出てきた乱数を100倍してから小数点以下を切り捨てればOKなので、小数点以下切捨てのMath.floorメソッドとあわせて使います。

randomNo=Math.floor(Math.random()*100);

となります。だた、これだと、100という数字が変化した場合に、変更がちょっと面倒かも…。
なので、ここに変数名をつけておきます。乱数を発生させるときの最大数を入れる変数としてMaxNoを作りました。

MaxNo=100;
var randomNo; randomNo=Math.floor(Math.random()*randomNo);

ただ、これだと、100未満の数字で、100は乱数として発生しません。100以下の整数で乱数がほしい場合は、

MaxNo=100;
var randomNo; randomNo=Math.floor(Math.random()*(randomNo+1));

となります。

ではではということで、見習、作ってみました。
おススメのサイトへのリンクをランダムに発生します。おススメのサイトは4つなので、0から3までの乱数を生成して、それに応じたサイトへのリンクを書き出します。

<script type="text/javascript">
<!--
numOfSites=4;
var num;
num=Math.floor(Math.random()*numOfSites);
if(num==0){
document.write('<a href="http://yahoo.co.jp/">Yahoo!はいかが?</a>');
}
else if(num==1){
document.write('<a href="http://google.co.jp/">Googleはいかが?</a>');
}
else if(num==2){
document.write('<a href="http://mori.beginners-luck.net/">森歩き日記を見てくれるとうれしい!</a>');
}
else{
document.write('<a href="http://pc.beginners-luck.net/">自称パソプロ計画を見てくれるとうれしい!</a>');
}
// ->
</script>

▼サンプル


もういっこトライしてみました。

ファイル名がimg0.gif、img1.gif、img2.gif、img3.gifという4つの画像ファイルがあります。それらのどれを表示させるか、乱数を使って決めます。

それから、その乱数で発生した数字に応じて、一緒にテキストも書き出すようにしてみました。

それと、別のところでも使えるように、乱数を発生させる関数を独立させて定義してみました。getRandom()という指定の数未満(ここでは4)の乱数を発生させるユーザ定義関数を作成しました。ここで4未満の乱数をmikujinumに代入します。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="content-script-type" content="text/javascript">
<meta http-equiv="content-style-type" content="text/css">
<title>気持ちだけ占い</title>
<style type="text/css">
h1,p {
text-align:center;
font-family:"ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", "メイリオ", Meiryo, Osaka, "MS Pゴシック", "MS PGothic", sans-serif;
margin:auto;
}
</style>
<script type="text/javascript">
<!--
function getRandom(){
var num;
num=4;
return Math.floor(Math.random()*num);
}
var mikujinum;
mikujinum=getRandom();
// ->
</script>
</head>
<body>
<h1>今日の運勢かも</h1>
<p>
<script type="text/javascript">
<!--
document.write('<img src="img/mikuji/img',mikujinum,'.gif"></p><p>');
if(mikujinum==0){
document.write('今日はとってもいいことありそうな');
}
else if(mikujinum==1){
document.write('きっといいことあるだろなぁ');
}
else if(mikujinum==2){
document.write('おお、けっこういいんじゃ・・・');
}
else{
document.write('たぶんOK、じつはいいことあるかもね');
}
// ->
</script>
</p>
</body>
</html>

▼サンプル

うまくいったかな。ときどき。