Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kombinacje i wariacje
Forum PHP.pl > Forum > PHP
kekerott
Jak w php (chodzi o algorytm więc nie tylko php) do tablicy zapisac kombinacje k-elementowe ze zbioru n-elementowego.

Nie wpadłem do tej pory na inny pomysł niż losowanie z tablicy (zbioru elementow do losowania) i dopisanie tego elementu do ciągu (a[n]). Potem usunięcie tych samych wartości w tablicy i niby działa. Jednak potrzeba dużej ilości 'prób' by wylosować wszystkie kombinacje.


Tutaj przykład wariacji, ale to taka droga na około.
  1. <?
  2. function make_seed() {
  3. list($usec,$sec) = explode(&#092;" \", microtime());
  4. return ((float)$sec+(float)$usec) * 100000;
  5. }
  6.  
  7. $zbior = array ( &#092;"A\", \"B\", \"C\");
  8. $n = count($zbior);
  9. $k = 3; // wyrazy k-elementowe 
  10.  
  11. for ($i=0; $i<=1000; $i++) // powtorzenie 1000x.
  12.  {
  13. for ($i2=0; $i2<$k; $i2++)
  14.  {
  15. srand(make_seed());
  16. $l = mt_rand(0,$n-1);
  17. $a[$i] .= $zbior[$l];
  18.  }
  19.  }
  20. $a = array_unique($a);
  21.  
  22. print_r($a);
  23. ?>


interesuje mnie algorytm, który będzie podawał dokładnie tyle kombinacji czy wariacji ile wynika ze wzoru. Nie będzie też jak ten powyższy tworzył niepotrzebnych ciągów (zdublowanych).
SongoQ
Nie mozesz sobie wygenerowac tablice w ktorej masz po kolei wygenerowana serie danych? Wtedy bedziesz mial wystapienie wszystkich kombinacji.
kekerott
tylko jak wygenerować taką tablicę (bo ja zrobiłem to jakby na około) blink.gif
DeyV
jeśli pracujesz w php5, co przydatny może być dla Ciebie temat:
http://forum.php.pl/index.php?showtopic=25997
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.