Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Warunek różności
Rey
post
Post #1





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

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


Mam taka oto petle do...while:

  1. do{
  2. $Lotto[6] = draw($freq_sum,$freq_distrib); //funkcje losujące sobie liczby
  3. $Lotto[5] = draw($freq_sum,$freq_distrib);
  4. $Lotto[4] = draw($freq_sum,$freq_distrib);
  5. $Lotto[3] = draw($freq_sum,$freq_distrib);
  6. $Lotto[2] = draw($freq_sum,$freq_distrib);
  7. $Lotto[1] = draw($freq_sum,$freq_distrib);
  8. //echo $Lotto[2]." ".$Lotto[1]." ".abs($Lotto[2]-$Lotto[1])."</br>";
  9. if((abs(max($Lotto[1],$Lotto[2],$Lotto[3],$Lotto[4],$Lotto[5],$Lotto[6])-min($Lotto[1],$Lotto[2],$Lotto[3],$Lotto[4],$Lotto[5],$Lotto[6]))==$spread) && (((((($Lotto[1]!=$Lotto[2])!=$Lotto[3])!=$Lotto[4])!=$Lotto[5])!=$Lotto[6]))){
  10. break;
  11. }
  12. }while(1>0);
  13.  


wiem że troche dziwna ale to nie o nią chodzi (IMG:style_emoticons/default/smile.gif) chodzi o warunek w "if" a dokładniej o jego drugą część znajdującą się po "&&" ( warunek przed && zawsze zostaje poprawnie spełniony):

  1. ((((($Lotto[1]!=$Lotto[2])!=$Lotto[3])!=$Lotto[4])!=$Lotto[5])!=$Lotto[6])


ma sprawdzać, aby wylosowane liczby były różne od siebie. Nie mam pojęcia czemu on nie działa, brakuje mi pomysłu na coś innego, a pisanie wszystkich kombinacji odpada bo zaraz muszę zrobić to samo dla Multi Multi a tam jest 20 losowanych liczb wiec wypisanie ich wszystkich to absurd (IMG:style_emoticons/default/smile.gif)

z góry dzięki za jakakolwiek pomoc!

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Nie lepiej użyć array_unique i potem count ?

Ten post edytował fifi209 18.11.2009, 19:32:09
Go to the top of the page
+Quote Post
thek
post
Post #3





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Kombinujesz jak koń pod górkę...
1. Zrób pustą tablicę.
2. Wylosuj liczbę z zakresu.
3. Sprawdź czy jest w tablicy.
4. Jeśli jest -> losuj ponownie.
5. Jeśli nie -> dodaj do tablicy.
6. Sprawdź czy tablica ma określoną ilość elementów.
7. Jeśli nie -> idź do kroku 2.
8. Jeśli ma określoną ilość -> koniec
Algorytm niezmienny i niezależny czy robimy dla ExpresLotka, DużegoLotka czy MultiLotka. Zmieniają się jedynie: ilość losowanych elementów, zakres elementów.
W skrócie:
  1. function losowanko($ile, $min, $max) {
  2. $tablica = array();
  3. while(count($tablica) < $ile ) {
  4. $losowana = rand($min, $max);
  5. if(!in_array($losowana, $tablica) ) {
  6. $tablica[] = $losowana;
  7. }
  8. }
  9. return $tablica;
  10. }

Mogą być błędy.... Pisałem z palca w ciągu może minutki lub dwóch (IMG:style_emoticons/default/winksmiley.jpg) Ale zasada jest identyczna.

EDIT: Nie wiem czy da się zrobić prościej generator losowań dowolnego systemu Lotkowego. Możesz na końcu jeszcze jedynie to posortować. Ale tak banalnej rzeczy już nie będę Ci pisał, bo to jedna linijka więcej do mojego kodu... Sam sobie już dopisz.

Ten post edytował thek 18.11.2009, 19:42:59
Go to the top of the page
+Quote Post
Rey
post
Post #4





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

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


znalazłem już w międzyczasie sposób z count i array_unique (IMG:style_emoticons/default/smile.gif) ale i tak dziękuje za pomoc (IMG:style_emoticons/default/smile.gif)
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: 24.08.2025 - 01:28