PHPで座席表を作る

(1/1)
学校では定期的に座席を並べ替える。多くの先生は、出席番号をランダムに並び替えて座席に割り当てる作業をしたことがあると思う。
PHPは、このような時に威力を発揮する関数を備えている。

サンプル・プログラム

準備

  35: //座席数
  36: $NumSeats = 30;

あらかじめ変数 $NumSeats に座席数を代入しておく。

解説:配列の作成とシャフル

  83: //座席表のための配列を作る
  84: $seats = range(1, $NumSeats);
  85: 
  86: //乱数の種をまく
  87: srand((float)microtime() * 1000000);
  88: 
  89: //配列をシャフルする
  90: shuffle($seats);

まず。添字を座席番号(1から順番)に、要素を出席番号と見なした配列を作成する。
PHPでは、ある範囲の整数を要素として順番に代入する  range  という関数が用意されているので、これを使うことにする。
これで座席番号と出席番号を順序よく対応させた配列 $seats ができる。

つぎに配列 $seats をランダム・シャフルするのだが、その前に、乱数がよりランダムになるように、乱数ジェネレータを初期化しておく。組み込み関数  srand  を使って初期化するのだが、初期化のためのシード(種)として現在時刻(マイクロ秒)を  microtime  関数で与えておく。
なお、PHP 4.2以降ではシードは自動的に与えられるので、単にsrand()と指定すれば良い。

配列の要素をシャフルするには、組み込み関数  shuffle  を使う。
シャフルした後の配列の添字は0から順番になっている点に注意しておきたい。
PHPではこのように、組み込み関数だけを使って配列をシャフルすることができる。

この方法は、トランプをシャフルするゲームなどにも応用が利く。
(この項おわり)
header