Próbuję napisać skrypt, który będzie losował 6 liczb z puli 48. Tym razem liczby nie mogą się powtarzać. Losowanie na zasadach dużego lotka. Wczoraj opisywałem problem z funkcją rand() (skrypt kończył działanie na ~16k pętli). Postanowiłem spróbować rozwiązać problem przy użyciu funkcji shuffle() w odniesieniu do tablicy. Skrypt wykonuje za każdym razem dokladnie 32768 pętli po czym zwraca true. Czy to wynika z ograniczeń funkcji shuffle() czy może ogólnego mechanizmu tasowania wartości losowych w PHP. Proszę drogich użytkowników o pomoc.

Oto kod skryptu

  1. <?php
  2. $pula = range(1,48);
  3. shuffle($pula);
  4. $liczby = array();
  5. for ($i = 0; $i <= 5; $i++)
  6. {
  7. $liczby[$i] = array_pop($pula);
  8. }
  9. echo "Wylosowane liczby to: ";
  10. sort($liczby);
  11. foreach ($liczby as $val)
  12. {
  13. echo "$val ";
  14. }
  15. echo "<br />";
  16. $liczby2 = array();
  17. $ilosc = 0;
  18. while ($liczby != $liczby2)
  19. {
  20. $pula2 = range(1,48);
  21. shuffle($pula2);
  22. for ($i = 0; $i <= 5; $i++) {
  23. $liczby2[$i] = array_pop($pula2); }
  24. sort($liczby2);
  25. echo "Wylosowano: ";
  26. foreach ($liczby2 as $val) {echo "$val ";}
  27. echo "--losowanie nr $ilosc<br /> \n";
  28. $ilosc++;
  29. }
  30. ?>