alternativas para php in_array para matrizes grandes para evitar entradas duplicadas
Eu preciso gerar uma grande lista de números aleatórios de 600k a 2000k, mas a lista não pode ter duplicatas.
Minha atual 'implementação' é assim:
<?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);
?>
Se eu mantiver oin_array
teste comentou o tempo de processamento é de cerca de 1 segundo, então omt_rand
chamadas e oused
O preenchimento de matriz é relativamente "barato", mas quando descomenteço o teste in_array, coisas ruins acontecem! (Eu só estou esperando - tem sido mais de 10 minutos - para o script terminar ...)
Então, estou procurando alternativas no lado de detecção de duplicados ou na parte de geração (como eu poderia gerar números aleatórios sem o risco de obter duplicatas)
Estou aberto a qualquer sugestão.