Optimización diria yo jpinedo .. Cuanto más se conoce el lenguaje .. menos código escribimos (usamos la función X en lugar de implementar el algoritmo entero; ejemplo .. ya que estamos con arrays, ordenar un array por el método de burbuja a "mano" o usar short() ). Y si hay alguna función o método "nativo" (como es el caso) .. seguro que es más optimo que lo que podamos hacer a mano "desglosado".
Al ilo del tema ordenar un array .. también existe:
suffle()
http://www.php.net/manual/en/function.shuffle.php
Esta desordena todo el array .. así que si quieres uno sólo .. hay que acceder al primer (o cualquier elemento) del array para tomar el valor. Para este caso array_rand() va mejor .. pero, .. imagina que tuvieramos que elegir N elementos del array aleatorios, en ese caso sería mejor esta función.
Un saludo,