【发布时间】:2014-08-07 08:49:18
【问题描述】:
以这个函数为例,它是一个种子 Fisher-Yates shuffle(顺序是随机的,但给定相同的种子可重现):
function seeded_shuffle(array &$items, $seed = false) {
$items = array_values($items);
mt_srand($seed ? $seed : time());
for ($i = count($items) - 1; $i > 0; $i--) {
$j = mt_rand(0, $i);
list($items[$i], $items[$j]) = array($items[$j], $items[$i]);
}
}
这个算法可以反转吗?即,给定种子值和打乱后的数组,数组可以“打乱”到其原始顺序吗?如果有,怎么做?
(问题出现in the comments here。)
【问题讨论】: