我有以下代码可供选择$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(使用前将#替换为@)