気軽に読めるPHP入門書・PHPスクリプトが動かないときの原因と対策などを紹介します。

  1. PHPサンプルコード
  2. 1 view

6がほとんど出ない「インチキなサイコロ」を作る

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 )

PHPサンプルコードの最近記事

  1. PHPでアラートを表示する

  2. ランダムなパスワードを自動生成する

  3. 配列をランダムに並べ替える(おみくじ・抽選プログラムを例に)

  4. n番目の文字を取得する

  5. 13日の金曜日を表示する

関連記事

PAGE TOP