高效地从 PHP 数组中选取 n 个随机元素(无需随机播放)

2024-01-26

我有以下代码可供选择$n数组中的元素$array in PHP:

shuffle($array);
$result = array_splice($array, 0, $n);

给定一个大数组但只有几个元素(例如5 out of 10000),这相对较慢,所以我想对其进行优化,以便不必对所有元素进行洗牌。这些值必须是唯一的。

我正在寻找性能最好的替代方案。我们可以假设$array没有重复项并且是0-索引。


$randomArray = [];
while (count($randomArray) < 5) {
  $randomKey = mt_rand(0, count($array)-1);
  $randomArray[$randomKey] = $array[$randomKey];
}

这将非常快地提供恰好 5 个没有重复的元素。密钥将被保留。

注意:您必须确保 $array 有 5 个或更多元素,或者添加某种检查以防止无限循环。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高效地从 PHP 数组中选取 n 个随机元素(无需随机播放) 的相关文章

随机推荐