Generando números aleatorios sin repeticiones.

Estoy creando un sitio web que mostrará aleatoriamente una lista de yelp cada vez que se actualice la página. La API de búsqueda de yelp devuelve 20 listados en una matriz. En este momento, estoy usando la función rand de PHP (0,19) para generar un listado aleatorio cada vez que se actualiza la página ($ negocios [rand (0,19)]).

¿Puede alguien referirme a un método más inteligente para aleatorizar? Quiero mostrar todos los 20 listados una vez antes de que se repita cualquiera de ellos. ¿Cuál es el método preferido para manejar este problema?

la siguiente respuesta no funciona porque los números se recrean cada vez que actualizo la página. ¿Supongo que necesito almacenar los números que ya he usado?

$numbers = range(0, 19);

shuffle($numbers);
// Handle Yelp response data
$response = json_decode($data);
$RANDOM = rand(1,19);
$business = $response->businesses;

echo "<img border=0 src='".$business[$RANDOM]->image_url."'><br/>";
echo $business[$RANDOM]->name."<br/>";
echo "<img border=0 src='".$business[$RANDOM]->rating_img_url_large."'><br/>";

?>

Respuestas a la pregunta(2)

Su respuesta a la pregunta