Рандомизировать массив PHP с семенем?

Я ищу функцию, в которую я могу передать массив и начальное значение в PHP и получить обратно "рандомизированный" массив. Если бы я снова передал тот же массив и то же семя, я бы получил тот же результат.

Я пробовал этот код

//sample array
$test = array(1,2,3,4,5,6);
//show the array
print_r($test);

//seed the random number generator
mt_srand('123');
//generate a random number based on that
echo mt_rand();
echo "\n";

//shuffle the array
shuffle($test);

//show the results
print_r($test);

Но, похоже, он не работает. Есть какие-нибудь мысли о том, как это лучше сделать?

Этот вопрос крутится вокруг проблемы, но он старый, и никто не дал реального ответа, как это сделать: Могу ли я рандомизировать массив, предоставив начальное число и получив тот же порядок? - «Да» - но как?

Обновление

Ответы пока работают с PHP 5.1 и 5.3, но не с 5.2. Так уж случилось, что машина, на которой я хочу это запустить, использует 5.2.

Может ли кто-нибудь привести пример без использования mt_rand? Он "сломан" в php 5.2, потому что он не дает одинаковой последовательности случайных чисел на основе одного и того же начального числа. См. страницу php mt_rand и трекер ошибок , чтобы узнать об этой проблеме.

33
задан Community 23 May 2017 в 12:34
поделиться