Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Losowanie liczb i sprawdzenie
przemek3741
post 27.05.2017, 16:56:18
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 27.05.2017

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


Mam problem. Chcę napisać skrypt który losuje 6 liczb i zapisuje do tablicy. Następnie sprawdza czy dana liczba nie znajduje się więcej niż raz, a następnie jeśli tak to losuje inną. Napisałem coś takiego i nie działa. Czemu? smile.gif
  1. <?php
  2.  
  3. for($i=0; $i<6; $i++) //losuje 6 liczb do tablicy
  4. {
  5. $tab[$i]=rand(1,6);
  6. }
  7.  
  8. for($a=0; $a<6; $a++)
  9. {
  10. while(in_array($tab[$a], $tab)) // sprawdza po kolei czy liczba sie znajduje w tablicy
  11. {
  12. $tab[$a]=rand(1,6); // jesli tak to losuje nową
  13. }
  14. }
  15.  
  16. for($i=0; $i<6; $i++)
  17. {
  18. echo $tab[$i].","; // wyswietla zawartosc tablicy
  19. }
  20.  
  21. ?>

lub
  1. <?php
  2.  
  3. for($i=0; $i<6; $i++) //losuje 6 liczb do tablicy
  4. {
  5. $tab[$i]=rand(1,6);
  6. }
  7.  
  8. for($a=0; $a<6; $a++)
  9. {
  10. if(in_array($tab[$a], $tab)) // sprawdza po kolei czy liczba sie znajduje w tablicy
  11. {
  12. $tab[$a]=rand(1,6); // to losuje nową
  13. }
  14. else
  15. {
  16. break; // jesli nie to przerywa petle
  17. }
  18. }
  19.  
  20. for($i=0; $i<6; $i++)
  21. {
  22. echo $tab[$i].","; // wyswietla zawartosc tablicy
  23. }
  24.  
  25. ?>


Ten post edytował przemek3741 27.05.2017, 16:57:28
Go to the top of the page
+Quote Post
czychacz
post 27.05.2017, 17:03:38
Post #2





Grupa: Zarejestrowani
Postów: 189
Pomógł: 13
Dołączył: 20.09.2008
Skąd: Lublin

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


O ile się nie mylę,
  1. while(in_array($tab[$a], $tab))
zawsze będzie wywalać ci liczby, bo zawsze jest co najmniej jedna. in_array zawsze zwróci true, bo w $tab masz już $tab[$a]
Zrób to trochę inaczej:
skonstruuj tablicę o n elementach i potraktuj ją array_rand(), która zwraca randomowe klucze i na podstawie tych kluczy możesz wyciągnąć unikalne liczby smile.gif
Go to the top of the page
+Quote Post
Kshyhoo
post 27.05.2017, 17:10:17
Post #3





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




  1. <?php
  2. srand((double)microtime()*1000000);
  3.  
  4. $ile = 6;
  5. $zilu = 49;
  6. $l=array();
  7.  
  8. for ($i=0;$i<$ile;$i++) {
  9. $liczba = rand(1, $zilu);
  10. if (in_array($liczba,$l)) $i--;
  11. else $l[$i] = $liczba;
  12. }
  13.  
  14. echo "Wylosowano: ";
  15. for ($i=0;$i<$ile;$i++) echo $l[$i]." ";
  16. ?>


--------------------
Go to the top of the page
+Quote Post
przemek3741
post 27.05.2017, 17:34:17
Post #4





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 27.05.2017

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


Rzekłbym, że genialne smile.gif I tak muszę napisać to delikatnie inaczej, ale sam pomysł wracania - 'i--' i losowanie liczby do zmiennej, a potem jej umieszczanie w tablicy, super pomoże. Dzięki wielkie smile.gif
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: 27.04.2024 - 14:28