alternatywy dla php in_array dla dużych tablic w celu uniknięcia duplikatów wpisów

Muszę wygenerować dużą listę liczb losowych od 600k do 2000k, ale lista nie może mieć duplikatów.

Moja obecna „implementacja” wygląda tak:

<?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);
?>

Jeśli zatrzymamin_array test skomentował czas przetwarzania około 1 sekundy, więcmt_rand połączenia iused Wypełnianie tablicy jest stosunkowo „tanie”, ale gdy odkomentuję, zdarza się, że test in_array jest zły! (Czekam tylko - minęło ponad 10 minut - aby skrypt zakończył się ...)

Więc szukam alternatyw albo po stronie zduplikowanej detekcji, albo w części generowania (jak mogę wygenerować losowe liczby bez ryzyka uzyskania duplikatów)

Jestem otwarty na wszelkie sugestie.

questionAnswers(4)

yourAnswerToTheQuestion