Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Znowu liczby losowe, tym razem z wykluczeniem liczb z tablicy
Forum PHP.pl > Forum > Przedszkole
uglukha
Witajcie,
mam następny problem z losowaniem liczb. Losuję liczbę z przedziału 1 do $ilosc. Chciałbym, aby liczba losowała się od nowa, jeśli wylosowana liczba jest już w $dane.

$dane to ciąg tego typu 4,3,7,21,23

Napisałem na razie tyle, i nie wiem jak to dalej ugryźć

  1. $ilosc = 100
  2. $tablica = explode(",", $dane);
  3.  
  4. $elementy = count($tablica)
  5.  
  6. for( $x = 0; $x < $elementy; $x++ ) {
  7.  
  8. $losuj=rand(1,$ilosc);
  9. //i co dalej
  10.  
  11. }


Będę wdzięczny za nakierowanie,
Pozdrawiam!
Piogola
Użyj array_rand z drugim parametrem
uglukha
Chyba nie do końca się zrozumieliśmy smile.gif

Moim celem jest "liczba" $losuj, która to liczba będzie w przedziale od 1 do 100, i nie będzie liczbą 4,3,7,21,23 (akurat w podanym przeze mnie przykładzie)

array_rand z tego co widzę, losuje pozycję z tablicy, i chyba raczej się nie przyda tutaj.
sadistic_son
Rozumiem, że chcesz wylosować jedną liczbę między 1 a np. 100, pod warunkiem, że nie ma jej w tablicy $tablica ,tak?
  1. $ilosc = 100;
  2. $tablica = explode(",", $dane);
  3.  
  4. $elementy = count($tablica);
  5.  
  6. for( $x = 0; $x < 1;) {
  7.  
  8. $losuj=rand(1,$ilosc);
  9.  
  10. if(!in_array($losuj, $tablica){
  11. $x++;
  12. }
  13. }
Valdi_B
Co do array_rand z 2-gim parametrem - taka wątpliwość:
Ta funkcja wybierze losową liczbę z tej tablicy.
Sądzę, że chodzi o coś innego: Ta tablica to lista wartości "zakazanych" (które już wylosowano).

Jeżeli tak, to musisz:
1. Po wylosowaniu liczby sprawdzić funkcją in_array, czy ta liczba jest w tablicy "wartości zakazanych".
2. Jeżeli tak, to zostajesz w pętli i losujesz następny raz.
3. Jeżeli nie, to
- dopisz tę liczbę do listy "zakazanych",
- zwróć ją.
Piogola
  1. do {
  2. $losuj = rand(1,10);
  3. } while(in_array($losuj, $tablica));
sadistic_son
Zresztą przecież miałeś już baaardzo podobny temat i otrzymałeś satysfakcjonujące rozwiązania.....
uglukha
Cytat(sadistic_son @ 24.02.2011, 20:43:48 ) *
Rozumiem, że chcesz wylosować jedną liczbę między 1 a np. 100, pod warunkiem, że nie ma jej w tablicy $tablica ,tak?

Dokładnie o to chodzi! smile.gif
Zaraz przeanalizuje Wasze odpowiedzi, dzięki smile.gif

Cytat(sadistic_son @ 24.02.2011, 20:48:36 ) *
Zresztą przecież miałeś już baaardzo podobny temat i otrzymałeś satysfakcjonujące rozwiązania.....

No tak, ale tam była jedna liczba, a tu jest ich cała masa w tablicy, i nie wiedziałem jak się z tym uporać sad.gif


Ok, dzięki Panowie, rozwiązaniem był in_array, nie znałem tego smile.gif
kod Piogoli działa tak jak chciałem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.