PHPスクリプトでサイコロを作るには、単純にmt_rand(1, 6)と記述すれば済みます。この関数で1から6までがランダムに取得できます。サイコロの出目数を検証するPHPスクリプトを作ってみましょう。
<?php // 出目をカウントする配列を作成(初期化) $ar = array_fill(0, 8, 0); // 出目の出現数をカウント for ($i = 0; $i < 1000; $i++) { $a = mt_rand(1, 6); // 1から6をランダムに取得 $ar[$a] += 1; } // 出目の出現数の結果を出力 print_r($ar); ?>
○実行結果(1から6がほぼ均等に発生)
Array ( [0] => 0 [1] => 182 [2] => 168 [3] => 161 [4] => 154 [5] => 174 [6] => 161 [7] => 0 )
1から6までが、ほぼ同じくらい出現していることがわかります。0と7は不要ですが、変な出目が出ていないか確認するためのものです。
ちなみに、この出目を見て、「統計学上、PHPのサイコロでは”1″が最も多く出る」と言うのは間違いです。よくある多い順に並べ替えただけの統計データにだまされないようにしましょう。
このPHPのサイコロは正当なものだとわかりましたが、mt_rand(1, 6)を変更すれば、6がほとんど出ない“インチキ”なサイコロも作ることができます。本当に6が出なくなるのか検証してみましょう。
<?php // 出目をカウントする配列を作成(初期化) $ar = array_fill(0, 8, 0); // 出目の出現数をカウント for ($i = 0; $i < 1000; $i++) { $a = floor(rand(60, 360) / 60); // 1から6の頻度が偏る $ar[$a] += 1; } // 出目の出現数の結果を出力 print_r($ar); ?>
1から6をランダムに取得するコードを操作して、6がほとんど出ないように変更しました。実行結果を見ると、恐ろしいほど6が出なくなったことがわかります。
○実行結果
Array ( [0] => 0 [1] => 214 [2] => 179 [3] => 175 [4] => 245 [5] => 182 [6] => 5 [7] => 0 )