альтернативы 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&nbsp;Тест прокомментировал, что время обработки составляет около 1 секунды, поэтомуmt_rand&nbsp;звонки иused&nbsp;заполнение массивов относительно «дешево», но когда я раскомментирую тест in_array, происходят плохие вещи! (Я просто жду - прошло более 10 минут - сценарий завершится ...)

Поэтому я ищу альтернативы на стороне обнаружения дубликатов или в части генерации (Как я могу генерировать случайные числа без риска получения дубликатов)

Я открыт для любых предложений.