And*_*zlo 12
抱歉,相应的文档中,随机播放功能会自动播种.
通常情况下,您不应该尝试使用自己的算法来随机化事物,因为它们很可能是有偏见的.已知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;
}
}
Run Code Online (Sandbox Code Playgroud)
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;
}
}
Run Code Online (Sandbox Code Playgroud)