Buduję stronę internetową, która będzie losowo wyświetlać listę skrzatów za każdym razem, gdy strona zostanie odświeżona. Funkcja wyszukiwania małp wyszukuje 20 ofert w tablicy. W tej chwili używam funkcji PHP rand (0,19) do generowania losowej listy za każdym razem, gdy strona jest odświeżana ($ business [rand (0,19)]).Generowanie liczb losowych bez powtórzeń
Czy ktoś może odnieść mnie do mądrzejszej metody randomizacji? Chcę wyświetlić wszystkie 20 ofert, zanim którekolwiek z nich się powtórzy. Jaka jest preferowana metoda rozwiązania tego problemu?
Poniższa odpowiedź nie działa, ponieważ liczby są odtwarzane za każdym razem, gdy odświeżam stronę. Zgaduję, że muszę przechowywać numery, których już używałem?
$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/>";
?>
Najprostszym sposobem na to jest uprzednie wypełnienie listy odkażonych losowych wartości przed rozdaniem. Dlaczego po prostu nie utworzysz zamówienia z góry i nie wybierzesz ostatniego, który nie był wyświetlany. Dla zwykłych użytkowników będzie to wyglądało losowo. –
jak zachować wszystkie 20 wokół, aby je pokazać? czy przechowujesz aukcje lokalnie, czy api przesyła Ci te same zapytania na życzenie? –
Wyszukaj "Fisher Yates" lub zobacz http://stackoverflow.com/questions/8116872/generate-random-numbers-in-array/8116947#8116947. – paxdiablo