じゃんけん グー!(Reload してね)
<?php $janken[0] = "グー"; $janken[1] = "チョキ"; $janken[2] = "パー"; $r = time() % 3; echo $janken[$r]; ?>
乱数とはでたらめな数のことです。
ここでは乱数といっても単に秒数を3で割って,余りが0なら「グー」,1なら「チョキ」,2なら「パー」としているだけです。
time() が1970年の元旦からの秒数を返す関数です。
$r = time() % 3; でそれを3で割った余りを $r に代入しています。
配列 $janken[0〜2] を作り,それで「グー」「チョキ」「パー」を表しています。
「グー」「チョキ」「パー」だけでなく背景の色も変わります。 これはどうしているのでしょうか。
PHP には a 以上 b 以下の乱数を返す関数 rand(a, b) があります。
これは乱数を初期化する関数 srand(x) を最初に呼び出してから使います。
srand(x) に与える整数 x によって乱数が決まります。
これを使ったソース例を挙げておきます。
<?php srand((double) microtime() * 1000000); $janken[0] = "グー"; $janken[1] = "チョキ"; $janken[2] = "パー"; echo $janken[rand(0, 2)]; ?>
microtime() は秒数のマイクロ秒以下です。
これを1000000倍したもので乱数を初期化しています。
もっと良い乱数として mt_rand(a, b)
とそれを初期化する mt_srand(x)
も PHP に備わっています。
これは Mersenne Twister
を使うものです。
ただ,良い乱数の良さは多数回使わないとわかりません。 今回のように1回きりのものは,初期化の手順だけしか意味がありません。
Last modified: 2007-12-04 12:55:37