Para empezar, estas dos líneas parecen contradecirse:
$dato ya es un array, lo conviertes en una cadena usando implode() y luego esa cadena colocas en el primer índice del array

. Sugeriría que quites esas dos líneas a no ser que tengas una buena razón para dejarlas

.
Además, sugeriría que usaras solo el < en vez de <= (en el bucle for) ya que count devolvería 3, y el bucle se ejecutaría 4 veces cuando solo debe ejecutarse 3 (0 a 2).
Aunque si solo se trata de generar números aleatorios, ¿qué tal usar
rand()?.