Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z prostym ćwiczeniem - Lotto
Forum PHP.pl > Forum > Przedszkole
bvandervaart
Hej! Dopiero stawiam pierwsze kroczki z PHP i próbuję prostych ćwiczeń. Chciałam zrobić losowanie liczb Lotto. W jednym pliku umieściłam:
  1. $n1 = rand(1,49);
  2. $n2 = rand(1,49);
  3. $n3 = rand(1,49);
  4. $n4 = rand(1,49);
  5. $n5 = rand(1,49);
  6. $n6 = rand(1,49);
  7.  
  8. while ($n2==$n1) {
  9. $n2 = rand(1,49);
  10. }
  11. while ($n3==$n2 or $n3==$n1) {
  12. $n3 = rand(1,49);
  13. }
  14. while ($n4==$n3 or $n4==$n2 or $n4==$n1) {
  15. $n4 = rand(1,49);
  16. }
  17. while ($n5==$n4 or $n5==$n3 or $n5==$n2 or $n2==$n1) {
  18. $n5 = rand(1,49);
  19. }
  20. while ($n6==$n5 or $n6==$n4 or $n6==$n3 or $n6==$n2 or $n6==$n1) {
  21. $n6 = rand(1,49);
  22. }


W drugim:

  1.  
  2. <h1>Twoje numery Lotto to:</h1>
  3.  
  4. <?php include "losowanie.php"; ?>
  5.  
  6. <div class="kulka"><p><?php echo $n1;?></p></div>
  7. <div class="kulka"><p><?php echo $n2;?></p></div>
  8. <div class="kulka"><p><?php echo $n3;?></p></div>
  9. <div class="kulka"><p><?php echo $n4;?></p></div>
  10. <div class="kulka"><p><?php echo $n5;?></p></div>
  11. <div class="kulka"><p><?php echo $n6;?></p></div>


Jednak po kilkukrotnym przeklikaniu okazało się, że numery się powtarzają. Czy ktoś mi podpowie co robię nie tak? Z góry dzięki za pomoc! smile.gif
ohm
Najprostszym sposobem jest utworzenie tablicy z elementami 0-49 i następnie oznaczanie jako wylosowane, wtedy losujesz jakąś liczbę i sprawdzasz czy taka została już wylosowana.

http://www.php.pl/Wortal/Artykuly/Pomysly-...my-do-gry-Poker - wiem że stary artykuł, ale może naprowadzi Cię na jakąś koncepcję wink.gif
trueblue
Cytat(ohm @ 6.02.2018, 20:15:24 ) *
Najprostszym sposobem jest utworzenie tablicy z elementami 0-49 i następnie oznaczanie jako wylosowane, wtedy losujesz jakąś liczbę i sprawdzasz czy taka została już wylosowana.

Albo shuffle takiej tablicy i wybranie 6 (np. pierwszych) elementów.

P.S. 1-49.
SmokAnalog
Gdyby funkcja shuffle zwracała nową tablicę, można by to było zrobić w jednej linijce. A tak (bez używania żadnych bibliotek) najprościej w trzech:

  1. $allNumbers = range(1, 49);
  2. shuffle($allNumbers);
  3. $winningNumbers = array_slice($allNumbers, -6);

ohm
Cytat(trueblue @ 6.02.2018, 21:14:18 ) *
P.S. 1-49.

No wiadomo biggrin.gif

Też myślałem o shuffle, ale, wg mnie, nie będzie tej radości z "ułożenia" jakiegoś algorytmu wink.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.