Sto costruendo un sito Web che visualizzerà in modo casuale un elenco di avvertimenti ogni volta che la pagina viene aggiornata. L'API di ricerca yelp restituisce 20 elenchi in un array. In questo momento sto usando la funzione di PHP rand (0,19) per generare un elenco casuale ogni volta che la pagina viene aggiornata ($ businesses [rand (0,19)]).Generazione di numeri casuali senza ripetizioni
Qualcuno può farmi riferimento a un metodo più intelligente da randomizzare? Voglio mostrare tutti i 20 elenchi una volta prima che vengano ripetuti. Qual è il metodo preferito per gestire questo problema?
la risposta qui sotto non funziona perché i numeri vengono ricreati ogni volta che aggiorno la pagina. Immagino di dover memorizzare quali numeri ho già usato?
$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/>";
?>
Il modo più semplice per farlo è precompilare un elenco di valori casuali disinfettati prima della mano. Perché non dovresti semplicemente creare l'ordine, in anticipo, e scegliere l'ultimo che non è stato visualizzato. Per gli utenti occasionali, questo sembrerà casuale. –
come fai a tenere tutti e venti i dintorni per mostrarli? memorizzi le inserzioni localmente o le API ti inviano le stesse su richiesta? –
Cercare "Fisher Yates" o consultare http://stackoverflow.com/questions/8116872/generate-random-numbers-in-array/8116947#8116947. – paxdiablo