PHP 用种子洗牌?

fos*_*fee 0 php

如何使 php shuffle 函数使用种子,以便当我使用相同的种子时,shuffle 函数将输出相同的数组。我读到随机播放是自动播种的。有没有办法获得所使用的随机播放的种子,或者如何使用自定义种子创建/模拟随机播放?

Mar*_*ker 5

您无法检索 shuffle 使用的种子,但您可以模拟 shuffle 并修复您自己的种子:

$array = range(1, 10);

function seededShuffle(array &$array, $seed) {
    mt_srand($seed);
    $size = count($array);
    for ($i = 0; $i < $size; ++$i) {
        list($chunk) = array_splice($array, mt_rand(0, $size-1), 1);
        array_push($array, $chunk);
    }
}

$seed = date('Ymd');
seededShuffle($array, $seed);
var_dump($array);
Run Code Online (Sandbox Code Playgroud)

这将每天设置不同的种子,但在一天中它将使用相同的种子并以相同的顺序对数组进行洗牌;明天将是与今天不同的随机洗牌

今天(2015 年 6 月 6 日),顺序应该是

3, 6, 9, 2, 7, 1, 8, 5, 10, 4
Run Code Online (Sandbox Code Playgroud)