Gerando números aleatórios sem repetições

Eu estou construindo um site que irá exibir aleatoriamente uma lista de yelp cada vez que a página é atualizada. O yelp search api retorna 20 listagens em uma matriz. No momento, estou usando a função do PHP rand (0,19) para gerar uma listagem aleatória toda vez que a página é atualizada ($ businesses [rand (0,19)]).

Alguém pode me indicar um método mais inteligente para randomizar? Eu quero mostrar todos os 20 anúncios uma vez antes de qualquer um deles ser repetido. Qual é o método preferido para lidar com esse problema?

a resposta abaixo não funciona porque os números são recriados toda vez que eu atualizo a página. Eu estou supondo que preciso armazenar quais números já usei?

$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/>";

?>

questionAnswers(2)

yourAnswerToTheQuestion