srand

関数の概要

PHPの srand 関数は、乱数生成の基となるシード値を設定するための関数です。乱数をより制御された形で生成したい場合や、同じ乱数の並びを再現したいデバッグ時に利用されます。
この関数を使うことで、乱数の開始点を任意に決めることができ、同じシード値を設定すれば、同じ順序で乱数が発生します。

パラメータの説明

  • seed(int): 乱数生成のためのシード値を整数で指定します。この値を基に乱数が決定されます。

戻り値

srand 関数は戻り値を返しません(void)。シード値を設定するだけの関数です。

使用例

基本的な使い方

<?php
// シード値を123に設定
srand(123);

// rand()で乱数を取得
echo rand(); // 毎回同じ乱数が出力される
?>

この例では、シード値を123に設定したため、rand()関数が返す乱数の順序が決まります。実行する度に同じ乱数が得られます。

シード値を変えて乱数のパターンを変更

<?php
// シード値を100に設定
srand(100);
echo rand() . "<br>";
echo rand() . "<br>";

// シード値を200に変更
srand(200);
echo rand() . "<br>";
echo rand() . "<br>";
?>

シード値を変更すると、乱数の生成パターンも変わります。これによって乱数の再現性やばらつきを意図的に制御できます。

乱数を毎回違うようにするには

<?php
// マイクロ秒まで含めた現在時刻をシードに使う
srand((int) microtime(true));

// 乱数を取得
echo rand();
?>

毎回異なるシード値を使うことによって異なる乱数列を生成できます。この例ではマイクロ秒単位の現在時刻を利用しているため、毎回違った乱数が得られます。

関連する関数

  • rand(): 指定された範囲内で乱数を生成する関数
  • mt_srand(): Mersenne Twisterアルゴリズム用の乱数シードを設定する関数
  • mt_rand(): Mersenne Twisterアルゴリズムによって乱数を生成する関数

まとめ

srand 関数はPHPで乱数生成のシードを手動で設定できる関数です。用途としては、テストやデバッグ時に同じ乱数列を再現したい場合や、乱数のパターンを意図的に決めたい時に役立ちます。ただし、PHP 7.1.0以降では乱数生成に関してMersenne Twisterベースの mt_srand()mt_rand() が推奨されており、より高品質な乱数を生成したい場合はそちらを使うことが推奨されています。