Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Losowanie liczb i sprawdzenie
Forum PHP.pl > Forum > Przedszkole
przemek3741
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. ?>
czychacz
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
Kshyhoo
  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. ?>
przemek3741
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
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.