męczę się z tematem od kilku dni i nie mogę sobie poradzić..
jak wylosować pojedynczą liczbę z danej puli tak aby ta liczba się nie powtarzała?
Potrzebuje to do losowania pytania:
$pytanie=rand(0,$ile_dane-1); // to losuje liczbę ale ona się powtarza
funkcja zostanie wywołana kiedy użytkownik wyśle formularz z typem radio,
Próbowałem zrobić ta za pomocą sesji w której zapisuje się wylosowana liczba ale i tak liczby się powtarzały.
session_start();
// tablica z liczbami
$aPytanie = array (0,1,2,3,4,5,6,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20);
if (!isset ($_SESSION['wylosowany_numer_pamiec'])) $_SESSION['wylosowany_numer_pamiec'] = array ();
$iPytanie = count ($aPytanie);
$bClear = false;
// Losowanie bez powtórzeń
do {
$iLos = rand (0, $iPytanie-1);
if (count ($_SESSION['wylosowany_numer_pamiec']) == $iPytanie) {
$_SESSION['wylosowany_numer_pamiec'] = array (); // Zerujemy magazyn losów
$bClear = true;
}
} while (in_array ($iLos, $_SESSION['wylosowany_numer_pamiec']));
$_SESSION['wylosowany_numer_pamiec'][] = $iLos;
echo '<span>Numer:</span> '.$aPytanie[$iLos].'</p>';
Znalazłem gdzieś, że można to zrobić za pomocą tablicy oraz pętli.
1.wylosowana liczba zapisuję się do tablicy i usuwa się z puli
2. losowanie następnej liczby
3. sprawdzenie czy wylosowana liczba znajduje się w tablicy liczb wylosowanych
4. jeśli nie dodaje liczbę do tablicy i zapisuje ją do zmiennej, jeśli tak losuje dalej
W tej chwili próbuje to zrobić na plikach txt ale też mi nic nie wychodzi.
Nie potrafię niestety przełożyć tego na kod.