альтернативы php in_array для больших массивов во избежание дублирования записей
Мне нужно создать большой список случайных чисел от 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 минут - сценарий завершится ...)
Поэтому я ищу альтернативы на стороне обнаружения дубликатов или в части генерации (Как я могу генерировать случайные числа без риска получения дубликатов)
Я открыт для любых предложений.