Gerando números randoms sem repetições

Estou construindo um site que exibirá aleatoriamente uma lista de gritos sempre que a página for atualizada. O api de pesquisa de grito retorna 20 listagens em uma matriz. Agora, estou usando a function rand do PHP (0,19) para gerar uma listview aleatória sempre que a página é atualizada ($ empresas [rand (0,19)]).

Alguém pode me encaminhar para um método mais inteligente para aleatorizar? Quero mostrar as 20 listas uma vez antes de uma delas ser repetida. Qual é o método preferido para lidar com esse problema?

A resposta abaixo não funciona porque os números são recriados sempre que atualizo a página. Eu acho 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 "image_url."'>
"; echo $business[$RANDOM]->name."
"; echo "rating_img_url_large."'>
"; ?>

Solução mais fácil:

 $numbers = range(1, 20); shuffle($numbers); 

Alternativa:

  

Pergunta semelhante: # 5612656

Codepad: http://codepad.org/cBaGHxFU

Atualizar:

Você está obtendo todas as listagens em uma matriz chamada $businesses .

  1. Gere uma ID de listview aleatória usando o método fornecido acima e depois guarde sua tabela de database.
  2. Em cada atualização de página, gere uma identificação de lista aleatória e verifique se ela corresponde ao valor em seu database. Caso contrário, exiba essa listview e adicione esse valor à sua tabela.
  3. Vá para o passo 1.

Quando isso for concluído, você terá exibido todas as 20 listagens ao mesmo tempo.

Espero que isto ajude!

Eu manteria um registro das IDs que foram exibidas em uma matriz e verifique se a matriz não contém essa ID antes de exibir a listview.