Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] wariacja
modern
post
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 2.10.2005

Ostrzeżenie: (20%)
X----


Witam,

szperam w guglach od wczoraj od 23:07 i znalazłem sporo przykładów, które ... najzwyczajniej w świecie nie działają.
Tutaj na forum także widziałem z kilka, lub kilkanaście tematów o wariacjach z powtórzeniami, wszystkie funkcje które prezentowali użytkownicy również się sypały, albo nie działały kompletnie... Widziałem funkcje z owocami i kolorami, ale to nie jest to, bo funkcja układa string z dwóch znaków z danych zbiorów. Potrzebuje funkcji, która jest uniwersalna i układa ciągi zawierające $zmienna znaków ze zbioru a-z, 0-9 oraz dodatkowo do zbioru dorzucam myślnik "-".

Na początek próbowałem coś zrobić z tym - http://forum.php.pl/index.php?showtopic=43...amp;hl=wariacje
ale po przeczytaniu tematu i wypowiedzi scanner'a, spróbowałem użyć jego funkcji, która niby działała, ale wyrzucała losowy ciąg, w dodatku przy ustawieniu 3 znaków (i wiecej) w ciągu skrypt umiera...

Następnie próbowałem przerobić to:
  1. <?
  2. function make_seed() {
  3.    list($usec,$sec) = explode(" ", microtime());
  4.    return ((float)$sec+(float)$usec) * 100000;
  5. }
  6.  
  7. $zbior = array ( "A", "B", "C", "-");
  8. $n = count($zbior);
  9. $k = 4; // 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. echo "<pre>";
  23. print_r($a);
  24. echo "</pre>";
  25. ?>

Ale to wyglądało jak zgadywanka, ciuciubabka, losowe tablice, powtarzają się np. pare razy CCCC albo po kilka razy BBBB
Już nie mam pojęcia jak to zrobić... prosze pomóżcie
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Ale to wyglądało jak zgadywanka, ciuciubabka, losowe tablice, powtarzają się np. pare razy CCCC albo po kilka razy BBBB
Już nie mam pojęcia jak to zrobić... prosze pomóżcie

Czytałem Twojego posta kilka razy próbując zrozumieć, o co Ci chodziło. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Jaki ciąg chcesz wygenerować? Losowy z tego zakresu?
Go to the top of the page
+Quote Post
piotrooo89
post
Post #3


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




jeśli chodzi o wariacje to chyba z tego zbioru ma tworzyć k-elementowe wariacje z powtórzeniami. czyli powiedzmy ze chcemy 2 elementowe wariacje zbioru 4 wyrazowego czyli 4^2, czyli one nie mogą być losowe, jeśli mówimy o wariacjach to muszą być z tego zbioru.
Go to the top of the page
+Quote Post
modern
post
Post #4





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 2.10.2005

Ostrzeżenie: (20%)
X----


Użyłem czegoś takiego:

  1. <?
  2. function permutations($letters,$num){
  3.    $last = str_repeat($letters{0},$num);
  4.    $result = array();
  5.    while($last != str_repeat(lastchar($letters),$num)){
  6.        $result[] = $last;
  7.        $last = char_add($letters,$last,$num-1);
  8.    }
  9.    $result[] = $last;
  10.    return $result;
  11. }
  12. function char_add($digits,$string,$char){
  13.    if($string{$char} <> lastchar($digits)){
  14.        $string{$char} = $digits{strpos($digits,$string{$char})+1};
  15.        return $string;
  16.    }else{
  17.        $string = changeall($string,$digits{0},$char);
  18.        return char_add($digits,$string,$char-1);
  19.    }
  20. }
  21. function lastchar($string){
  22.    return $string{strlen($string)-1};
  23. }
  24. function changeall($string,$char,$start = 0,$end = 0){
  25.    if($end == 0) $end = strlen($string)-1;
  26.    for($i=$start;$i<=$end;$i++){
  27.        $string{$i} = $char;
  28.    }
  29.    return $string;
  30. }
  31. ?>
  32.  
  33.  
  34. <?
  35. $Array=permutations("abcdefghijklmnopqrstuvwxyz0123456789-",3);
  36. for($i=0 ; $i < count($Array) ; $i++) {
  37.        echo "$i." . $Array[$i] . "<BR>";
  38. }
  39. ?>


czyli jednak jestem DUMBAS (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) bo chodziło mi chyba o permutacje, skoro funkcja na permutacje robi to co chciałem
Go to the top of the page
+Quote Post
piotrooo89
post
Post #5


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




wiesz permutacje liczy się tak samo jak warjacje z powtórzeniami (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) tak trochę matmy.
Go to the top of the page
+Quote Post
modern
post
Post #6





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 2.10.2005

Ostrzeżenie: (20%)
X----


Cytat(piotrooo89 @ 14.04.2009, 19:53:05 ) *
wiesz permutacje liczy się tak samo jak warjacje z powtórzeniami (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) tak trochę matmy.

mature pisałem rok temu, i to z matmy (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) więc już zapomniałem co z czym się je
Go to the top of the page
+Quote Post

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 - 07:30