gpt4 book ai didi

php - 用于大型数组的 php in_array 替代方案,用于避免重复条目

转载 作者:可可西里 更新时间:2023-10-31 23:52:21 24 4
gpt4 key购买 nike

我需要生成从 600k 到 2000k 的大量随机数列表,但是列表不能有重复。

我当前的“实现”如下所示:

<?php
header('Content-type: text/plain');
$startTime = microtime(true);
$used = array();
for ($i=0; $i < 600000; ) {
$random = mt_rand();
//if (!in_array($random, $used)) {
$used[] = $random;
$i++;
//}
}
$endTime = microtime(true);
$runningTime = $endTime - $startTime;
echo 'Running Time: ' . $runningTime;
//print_r($used);
?>

如果我保留 in_array 测试注释,处理时间大约为 1 秒,所以mt_rand 调用和 used 数组填充相对“便宜”但是当我取消注释时in_array 测试坏事发生了! (我只是在等待 - 已经超过 10 分钟 - 脚本终止...)

所以我正在寻找重复检测方面或生成部分的替代方案(我如何生成随机数而不会有重复的风险)

我愿意接受任何建议。

最佳答案

对于快速/肮脏的解决方案,使用/检查数组键是否可以提高您的速度?

$used = array();
for ($i = 0; $i < 600000; ) {
$random = mt_rand();
if (!isset($used[$random])) {
$used[$random] = $random;
$i++;
}
}
$used = array_values($used);

关于php - 用于大型数组的 php in_array 替代方案,用于避免重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1458242/

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