申し訳ありませんが、ドキュメントによると、シャッフル関数は自動的にシードされます。
通常、物事をランダム化するために独自のアルゴリズムを考え出そうとするべきではありません。ただし、Fisher-Yatesアルゴリズムは効率的で偏りがないことが知られています。
function fisherYatesShuffle(&$items, $seed)
{
@mt_srand($seed);
$items = array_values($items);
for ($i = count($items) - 1; $i > 0; $i--)
{
$j = @mt_rand(0, $i);
$tmp = $items[$i];
$items[$i] = $items[$j];
$items[$j] = $tmp;
}
}
php7 の文字列に対する同じ関数
function fisherYatesShuffle(string &$items, int $seed)
{
@mt_srand($seed);
for ($i = strlen($items) - 1; $i > 0; $i--)
{
$j = @mt_rand(0, $i);
$tmp = $items[$i];
$items[$i] = $items[$j];
$items[$j] = $tmp;
}
}