Ver original// con generadores desde PHP 5.5for ($i=1;$i<21;$i++) $todos[] = $i; // de tu consulta SQL$asignados = [4,6,12,17,18,2,19,10]; if (count($asignados)==20) echo "Todos asingados!"; else{ $libres = array_diff($todos,$asignados); shuffle($libres); // mezclo echo $libres[0];}