Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Lowanie unikalnych liczb ala lotto
arsen99
post 25.10.2012, 08:02:19
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 23.10.2007

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


Witam

Szybkim wstępem napisze tylko, że po 4 latach w końcu na poważnie wziąłem się za nauke php i chyba będę tu częstym gościem smile.gif

Ok problem polega na wylosowaniu 6 niepowtarzalnych liczb z 49. Przedstawie mój sposób rozumowania, a ktoś mam nadzieje powie mi WHY (siedziałem wczoraj do 2 w nocy) to nie działa.


  1. for ($i = 0; $i <= 5; $i++) { //będzie 6 losowań
  2. $j = rand(1, 49); // jakaś pierwsza wylosowana liczba
  3.  
  4. $tablicaliczb[$i] = "$j"; // dla każdego losowania zapamiętujemy wylosowaną liczbę w tablicy aby móc potem porównać z nowo wylosowaną
  5.  
  6. if (in_array($j, $tablicaliczb)) { //sprawdzamy czy w już utworzonej tablicy jest nowo wylosowana liczba
  7. $i--; //jeżeli tam jest juz taka liczba, to odejmuję 1 od cyklu losowania, co spowoduje że losowanie z tym samym indexem się powtórzy
  8. }
  9. else // a jak liczby nie ma w tablicy to ją wyświetl
  10. echo "$j";
  11.  
  12. // print_r($tablicaliczb); oglądamy sobie tablice jeżeli mamy ochotę
  13. echo "<br>";
  14. }



No i co nie działa. Szczególnie podoba mi się warunek, że jak liczba znajduje się w tablicy, to odejmiemy 1 od $i, co spowoduje wrócenie dokładnie do tego samego losowania, bo najpierw odejmiemy jeden a potem doda sie 1, i znowu na przykład jesteśmy w 3 losowaniu.

Jak bym mógł poprosić o wskazanie błędu w tym rozumowaniu, widziałem inne rozwiązania, ale czemu to nie działa? U mnie ciągle wykonuje się "if" tak jak by warunek był ciągle poprawny, tak jak by losował ciągle liczbę która juz była wylosowana wcześniej sad.gif

Dzieki
Go to the top of the page
+Quote Post
nospor
post 25.10.2012, 08:04:53
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




$tablicaliczb[$i] = "$j";
if (in_array($j, $tablicaliczb))

Najpiero dodajesz liczbę do tablicy a potem sprawdzasz czy ona w tej tablicy jest a następnie się dziwisz że jest..... brak słów że tak powiem.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
wpaski
post 25.10.2012, 09:39:12
Post #3





Grupa: Zarejestrowani
Postów: 206
Pomógł: 6
Dołączył: 25.12.2011

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


jeśli chcesz zapamiętać liczbę w tablicy to musisz użyć .=
  1. $tablicaliczb[$i] .= "$j";



//dobra coś mi sie pomieszało tongue.gif

Ten post edytował wpaski 25.10.2012, 14:00:24
Go to the top of the page
+Quote Post
nospor
post 25.10.2012, 09:59:04
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@wpaski co ty wygadujesz..... zapis do tablicy autor zrobił poprawnie. Pomyliła mu sie jedynie kolejność operacji, o czym wspomniałem dość wyraźnie w poprzednim poście


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
golaod
post 25.10.2012, 10:48:29
Post #5





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

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


To może poinformujmy go już dodatkowo ( i na przyszłość ), że w jego przykładzie przypisywanie przez "$j" jest lekko bezsensowne i zasobożerne.
Go to the top of the page
+Quote Post
nospor
post 25.10.2012, 10:53:08
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Z zasobernością to lekka przesada. Zaś co do bezsensowności to się zgadzam.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
arsen99
post 25.10.2012, 18:15:10
Post #7





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 23.10.2007

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


Hej

Mam w zwyczaju dziękować za pomoc więc to robię.
Faktycznie mimo że patrzyłem na to z 1h to nie widziałem tego że najpierw wprowadzam liczbę w tablicę a potem sprawdzam czy ona tam jest.
Z tym "brakiem słów" mogłeś darować, w każdym razie dzięki, poprawiłem już i działa.
Kiedyś jak będę może biegły, będę widział różne rzeczy to zoptymalizuje, na razie przynajmniej dobrze widzę co się z czego bierze i ćwiczę sobie tworzenie i używanie zmiennych.
Pozdro
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 13:33