Aunque este post es del 2004 para lo unico que me sirvio fue seguir averiguando hasta que encontre
shuffle($myarray);
Usar este código antes de recorrer el array, asi se desordenara.
array antes [1][2][3]
array despues [2][1][3] (posiblemente entre sus opciones)
es mas sencillo y no hay riesgos de duplicar datos.
en cuanto a array_rand usenlo para otra cosa menos para desordenar un array.