Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] losowanie - tablica wielowymiarowa
Dj.Crack
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 7.07.2004

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


Witam,

mam problem z losowaniem liczb, które są umieszczone w tablicy.

  1. <?php
  2. $list= array(
  3. "a" => range(1, 7),
  4. "b" => range(1, 7),
  5. "c" => range(1, 7),
  6. );
  7. ?>


Chciałbym móc wylosować 5 liczb - z tym, że losowanie między tablicy "a", "b", "c" może się powtarzać, ale wylosowane
liczby w tych tablicach już nie.

Na przykład wylosowałem: 1, 2, 3, 4, 7
z tablicy "a" liczby: 1, 3, 7
z tablicy "c" liczby: 2, 4

ale może być również: 1, 1, 1, 4, 6
z tablicy "a" liczby: 1, 6
z tablicy "b" liczby: 1
z tablicy "c" liczby: 1, 4

Próbowałem na rózne sposoby array_rand(), ale niestety efekty nie były zadowalające.
Prosiłbym o jakieś wskazówki, jak zabrać się za to losowanie.

Pozdrawiam

Ten post edytował Dj.Crack 9.03.2013, 14:37:46
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Michael2318
post
Post #2





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


Można też użyć np. czegoś takiego:

  1. function rand_unique_numbers($count, $from, $to, $array = true)
  2. {
  3. $count = intval($count);
  4. $from = intval($from);
  5. $to = intval($to);
  6.  
  7. if ( $count < 1 || $to < 1 || $from > $to || $count > $to || $to > 10000 )
  8. {
  9. return FALSE;
  10. }
  11.  
  12. $tab = array();
  13. for($i=$from; $i<=$to; $i++)
  14. {
  15. $tab[] .= $i;
  16. }
  17.  
  18. shuffle($tab);
  19.  
  20. $loosed = $array ? array() : '';
  21. for($i = $from; $i<($count+$from); $i++)
  22. {
  23. if ( $array )
  24. {
  25. $loosed[] .= $tab[$i];
  26. }
  27. else
  28. {
  29. $loosed .= $tab[$i].', ';
  30. }
  31. }
  32. if ( !$array )
  33. {
  34. $loosed = rtrim(trim($loosed), ',');
  35. }
  36.  
  37. return $loosed;
  38. }


W tym momencie do zmiennej/tablicy przypisujesz sobie po prostu tą funkcję, np.:
  1. $zmienna = rand_unique_numbers(5, 0, 100, true);

gdzie w powyższym przykładzie wylosowane zostanie 5 liczb z przedziału 0 - 100, bez powtarzania się. Wynikiem funkcji będzie tablica, natomiast jeśli jako ostatni parametr podasz false, zwrócony zostanie string - liczby po przecinku.

(IMG:style_emoticons/default/wink.gif)

Ten post edytował Michael2318 9.03.2013, 21:09:21
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 12:22