mt_srand

関数の概要

PHPの mt_srand 関数は、疑似乱数生成器のシード値を設定するための関数です。これにより、mt_rand 関数で出力される乱数の再現性を持たせることができます。特にテストやデバッグ時に同じ乱数列を再現したい場合に役立ちます。

パラメータの説明

  • int $seed(省略可能):シード値を指定します。整数値を与えることで、乱数生成の初期化を行います。省略した場合は、デフォルトで内部的にシステム時間などを元に設定されます。

戻り値

mt_srand は戻り値を返しません。void型です。

使用例

基本的な使い方

<?php
mt_srand(1234);
echo mt_rand(), "n"; // いつも同じ乱数が出力される
echo mt_rand(), "n";
?>

シードに「1234」を設定したため、mt_rand() は毎回同じ乱数を生成します。

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

<?php
mt_srand(100);
echo mt_rand(), "n";

mt_srand(200);
echo mt_rand(), "n";
?>

異なるシード値を設定することで、乱数のパターンが変わることが分かります。

シードをリセットして同じ乱数を再生成する例

<?php
mt_srand(555);
$first = mt_rand();
$second = mt_rand();

mt_srand(555); // シードを再設定
$firstAgain = mt_rand();
$secondAgain = mt_rand();

var_dump($first === $firstAgain);  // true
var_dump($second === $secondAgain);  // true
?>

同じシードを再度設定すると、乱数の列は再現され、同じ値が得られます。

関連する関数

  • mt_rand() – Mersenne Twister アルゴリズムを使った乱数生成関数
  • srand() – 古い乱数生成器のシードを設定する関数
  • rand() – 古い乱数生成関数

まとめ

mt_srand は、PHPで乱数の再現性を持たせたいときに便利な関数です。テスト時やデバッグの際に安定した乱数列が必要な場合に活用しましょう。ただし、通常の乱数生成であれば、シードを明示的に設定しなくても問題ありません。乱数の品質や速度を重視する場合は、mt_rand() と組み合わせて使うことがおすすめです。