deja pour commencer à mon avis c'est rand(1, 300) et pas round(1, 300) et si tu testes ton script tu verras qu'il boucle à l'infini...
$i est toujours égale à 0 et $i < count($tab) des le premier...