Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] wariacja
Forum PHP.pl > Forum > Przedszkole
modern
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
erix
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. tongue.gif Jaki ciąg chcesz wygenerować? Losowy z tego zakresu?
piotrooo89
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.
modern
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 smile.gif bo chodziło mi chyba o permutacje, skoro funkcja na permutacje robi to co chciałem
piotrooo89
wiesz permutacje liczy się tak samo jak warjacje z powtórzeniami winksmiley.jpg tak trochę matmy.
modern
Cytat(piotrooo89 @ 14.04.2009, 19:53:05 ) *
wiesz permutacje liczy się tak samo jak warjacje z powtórzeniami winksmiley.jpg tak trochę matmy.

mature pisałem rok temu, i to z matmy biggrin.gif więc już zapomniałem co z czym się je
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.