Es posible que la consulta no genere ningún resultado, y por lo tanto la variable que usas con shuffle() no existe.
Eso significa que dicho valor es NULL, procura declarar tus variables antes de usarlas.
Por ejemplo, si declaras dicha variable que se rellena en el while() antes del bucle, y la defines como array() te aseguro que no tendrás problemas.