gpt4 book ai didi

php - 如何通过提供种子并获得相同顺序来随机化 PHP 中的数组?

转载 作者:可可西里 更新时间:2023-11-01 12:31:40 26 4
gpt4 key购买 nike

我正在尝试创建一个基于固定字符串的“随机”字符串。如果可能的话,我希望能够创建相同的随机字符串(我知道这是矛盾的),前提是我使用相同的种子。像这样:

    $base = '0123456789abcdef';    $seed = 'qwe123';    function get_seeded_random_string($base, $seed){        ???    }

预期的行为是只要我提供相同的 $base$seed 我总是得到相同的随机字符串。

最佳答案

对不起,但是根据 the documentation随机播放功能会自动播种。

通常,您不应尝试想出自己的算法来随机化事物,因为它们很可能存在偏差。 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;
}
}

关于php - 如何通过提供种子并获得相同顺序来随机化 PHP 中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3169805/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com