Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z rand(); - nie losuje
Forum PHP.pl > Forum > Przedszkole
SarnaMC
Witam. Piszę coś w stylu lotto dla mojej strony ( konkurs). Wszystko mi pięknie działało dopóki nie zacząłem pisać losowania liczb. Znalazłem na necie rand() ale ona sie dziwnie zachowuje. Oto plik class:
  1. <?php
  2.  
  3. class lotto
  4. {
  5. function generowanie()
  6. {
  7. $liczba1 = rand(1, 40);
  8. $liczba2 = rand(1, 40);
  9. $liczba3 = rand(1, 40);
  10. $liczba4 = rand(1, 40);
  11. $liczba5 = rand(1, 40);
  12. echo rand(0, 40);
  13.  
  14. }}
  15. ?>

i teraz plik index:
  1. $lotto->generowanie();
  2. echo "$liczba1 $liczba2 $liczba3 $liczba4 $liczba5 test ";


Jedyne co mi się wyświetla to to ostatnie rand które dałem już w echo oraz napis test. Nie wiem czemu tak się dzieje, pomożecie?

#EDIT
hmmm przemyślałem to i widzę że powinienem chyba użyć return w pliku class, tylko że po dopisaniu return $liczba1; dalej to nie działa
IProSoft
Nowe:
  1. class lotto
  2. {
  3. public $rands = array();
  4. function generowanie()
  5. {
  6. $this->rands = array_map(
  7. function ($value) {
  8. return rand( 0, 40 );
  9. },
  10. range(1, 10)
  11. );
  12. }
  13. }
  14.  
  15. $lotto = new lotto();
  16. $lotto->generowanie();
  17.  
  18. echo implode( ' ', $lotto->rands );


albo w swoim w funkcji musisz zwrócic:

  1. return "$liczba1 $liczba2 $liczba3 $liczba4 $liczba5";
kreatiff
Jeśli lotto ma być bez powtórzeń, to musisz to inaczej zbudować, bo w obu powyższych przypadkach mogą wystąpić powtórzenia.
Ja to zawsze robię tak:
  1. $a = range(1,40);
  2. shuffle($a);
  3. // i wybieram sobie pierwsze x elementów tablicy, gdzie x to ilość potrzebnych liczb

ale to na własny użytek, nie produkcyjny.

Jak zbiór, z którego losujemy jest ogromny*, to lepiej losować i sprawdzać, czy dana wartość już padła i jeśli tak, to ponowić losowanie.
* wszystko sprowadza się do optymalizacji
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.