Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> kombinacje i wariacje
kekerott
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 27.12.2004
Skąd: TBG

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


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).
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: 23.08.2025 - 16:59