Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Losowanie liczby bez powtórzeń
DukaN
post 23.08.2013, 18:27:01
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 26.01.2013

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


Witam,

Mam pytanie a zarazem problem. Chcę stworzyć skrypt, który będzie mi losował liczbę od 1 do 5. Niestety wylosowane liczby nie mogą się powtarzać, tzn wylosuje 4 i przez kolejne 5 losowań nie może ona się powtórzyć, po 5 losowaniach "restart" losowania i od nowa. Myślałem żeby to zrobić za pomocą rand() i sesji, no i przy zapisie liczb do sesji utknąłem. Pomoże ktoś?

Pozdrawiam

//EDIT
Nie musi to być zapis do sesji.

//EDIT2
Znajomy stworzył taki kod:
  1. <?php
  2. if(!isset($_SESSION["randed"]))
  3. $_SESSION["randed"] = "";
  4.  
  5. $tabl = explode("|", $_SESSION["randed"]);
  6. $min = 1;
  7. $max = 5;
  8.  
  9.  
  10.  
  11. //wylosowalismy juz wszystkie liczby, zerujemy
  12. if(count($tabl) == $max - $min + 2)
  13. {
  14. $_SESSION["randed"] = "";
  15. $tabl = array();
  16. }
  17.  
  18. function AlreadyRanded($tabl, $num)
  19. {
  20. for($i = 0; $i < count($tabl); $i++)
  21. if($tabl[$i] == $num)
  22. return true;
  23.  
  24. return false;
  25. }
  26. //losujemy
  27. do
  28. {
  29. $randed = rand($min, $max);
  30.  
  31. } while(AlreadyRanded($tabl, $randed));
  32.  
  33.  
  34. if($randed == 1){
  35. echo "";
  36. }
  37. else{
  38. echo $randed;
  39. }
  40. //dodaj ją do sesji
  41. $_SESSION["randed"] .="|$randed";
  42. }
  43. ?>


Polega na tym, że jak już skończy losować serię i ostatnia liczba to np 4, to żeby zaczynając od nowa to następna (pierwsza) liczba musi być różna od ostatniej, czyli w tym przypadku 4

Ten post edytował DukaN 23.08.2013, 19:40:14
Go to the top of the page
+Quote Post
Wazniak96
post 23.08.2013, 19:44:02
Post #2





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

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


  1. <?php
  2.  
  3. $liczby = unserialize($_SESSION['liczby']);
  4. if(count($liczby) == 5)
  5. $liczby = array();
  6.  
  7. $liczba = rand(1, 5);
  8.  
  9. while(in_array($liczba, $liczby))
  10. {
  11. $liczba = rand(1, 5);
  12. }
  13.  
  14. $liczby[] = $liczba;
  15.  
  16. $_SESSION['liczby'] = serialize($liczby);


Ten post edytował Wazniak96 23.08.2013, 19:45:32
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: 19.07.2025 - 08:41