Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Znowu liczby losowe, tym razem z wykluczeniem liczb z tablicy
uglukha
post
Post #1





Grupa: Zarejestrowani
Postów: 110
Pomógł: 0
Dołączył: 5.05.2008

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


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!


--------------------
Death and Decay >.<
Go to the top of the page
+Quote Post
Piogola
post
Post #2





Grupa: Zarejestrowani
Postów: 151
Pomógł: 36
Dołączył: 1.02.2011
Skąd: Warszawa

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


Użyj array_rand z drugim parametrem


--------------------
Google Manual
Go to the top of the page
+Quote Post
uglukha
post
Post #3





Grupa: Zarejestrowani
Postów: 110
Pomógł: 0
Dołączył: 5.05.2008

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


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.


--------------------
Death and Decay >.<
Go to the top of the page
+Quote Post
sadistic_son
post
Post #4





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


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. }


Ten post edytował sadistic_son 24.02.2011, 20:45:19


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
Valdi_B
post
Post #5





Grupa: Zarejestrowani
Postów: 107
Pomógł: 30
Dołączył: 19.02.2011
Skąd: Warszawa

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


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ą.

Ten post edytował Valdi_B 24.02.2011, 20:50:29
Go to the top of the page
+Quote Post
Piogola
post
Post #6





Grupa: Zarejestrowani
Postów: 151
Pomógł: 36
Dołączył: 1.02.2011
Skąd: Warszawa

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


  1. do {
  2. $losuj = rand(1,10);
  3. } while(in_array($losuj, $tablica));


--------------------
Google Manual
Go to the top of the page
+Quote Post
sadistic_son
post
Post #7





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Zresztą przecież miałeś już baaardzo podobny temat i otrzymałeś satysfakcjonujące rozwiązania.....


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
uglukha
post
Post #8





Grupa: Zarejestrowani
Postów: 110
Pomógł: 0
Dołączył: 5.05.2008

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


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.

Ten post edytował uglukha 24.02.2011, 21:03:46


--------------------
Death and Decay >.<
Go to the top of the page
+Quote Post

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: 20.08.2025 - 19:45