Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Problem z funkcją array_rand, Dublowanie wyników losowania
sarq18
post 24.07.2008, 11:46:01
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 24.07.2008

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


Witam.

Mam pewien problem z funkcją array_rand. Chodzi o losowanie sześciu liczb z zakresu od 1 do 49.
Kod wygląda tak
Kod
     for ($i = 0; $i < 1000; $i++){
      $liczby = range(1,49);
      $wynik = array_rand($liczby,6);
      foreach($wynik as $liczba)
      {
      
      echo $liczby[$liczba];
      echo ' ';
      }
      echo '
  ';
      }


Na stronie wyświetla się 1000 wyników. Problem w tym, że tylko ~700 wyników jest unikalnych, reszta to dokładnie takie same wyniki jak te pierwsze 700, są nawet wyświetlanie w takiej samej kolejności. Jeśli skopiuję kilka wyników i przeładuję stronę (czyli wyniki powinny zostać wylosowane na nowo) okazuje się, że wylosowane zostały znów te same wyniki (zupełnie jakby "pamięć" programu losującego została zapchana i ciągle losuje te same wyniki). Dlaczego tak się dzieje, da się to jakoś obejść?
I druga sprawa, dlaczego niektóry wyniki nie są wyświetlane od najmniejsze do największej liczby (większość jest wyświetlona dobrze)?

Pozdrawiam i z góry dziękuje za odpowiedzi.

EDIT:
Jeśli ma to jakieś znaczenie to korzystam z Krasnala w wersji 2.7.

Ten post edytował sarq18 24.07.2008, 11:51:57
Go to the top of the page
+Quote Post
mike
post 24.07.2008, 11:53:21
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


  1. <?php
  2.  
  3. for ($i = 0; $i < 1000; $i++) {
  4. $set = range(1, 49);
  5. shuffle($set);
  6. foreach (array_slice($set, 1, 6) as $number) {
  7. echo $number . ' ';
  8. }
  9. echo '<br />';
  10. }
  11.  
  12. ?>
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: 7.07.2025 - 01:20