Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Losowanie liczby, Losowanie jednej liczby z puli liczb bez powtarzania się
erder
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 15.05.2012

Ostrzeżenie: (0%)
-----


Witam,

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.

  1.  
  2. // tablica z liczbami
  3. $aPytanie = array (0,1,2,3,4,5,6,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20);
  4.  
  5.  
  6.  
  7. if (!isset ($_SESSION['wylosowany_numer_pamiec'])) $_SESSION['wylosowany_numer_pamiec'] = array ();
  8.  
  9. $iPytanie = count ($aPytanie);
  10. $bClear = false;
  11.  
  12. // Losowanie bez powtórzeń
  13. do {
  14. $iLos = rand (0, $iPytanie-1);
  15. if (count ($_SESSION['wylosowany_numer_pamiec']) == $iPytanie) {
  16. $_SESSION['wylosowany_numer_pamiec'] = array (); // Zerujemy magazyn losów
  17. $bClear = true;
  18. }
  19. } while (in_array ($iLos, $_SESSION['wylosowany_numer_pamiec']));
  20. $_SESSION['wylosowany_numer_pamiec'][] = $iLos;
  21. 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
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

Nie potrafię niestety przełożyć tego na kod.
Go to the top of the page
+Quote Post

Posty w temacie
- erder   [PHP]Losowanie liczby   15.05.2012, 13:17:49
- - bostaf   Zapisz sobie poniższy skrypt w osobnym pliku, uruc...   16.05.2012, 13:57:53


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 08:10