Wrzesień 08 2010 03:15:00
Nawigacja
Nawigacja
Wpisy i komentarze
Ostatnie artykuły
· Jak ustawić kupon d...
· Inne wcielenie Lotto...
· Obsługa LC od podstaw.
· Codzienne użytkowa...
· Okazuje się że wa...
Reklama Google
Aktualnie online
Skrypt statystyk
BUDUJEMY PIERWSZY SKRYPT
Algorytm skryptu : Utworzyć z liczb gry strefy po dwie liczby w następujący sposób, przy czym podstrefy stanowią pary w pionie :

Przykładowym systemem strefowym dla strefy 1 będzie system z liczb :
1 9 ,2 10, 3 11, 4 12, 5 13, 6 14, 7 15, 8 16
i ma 247 zakładów: Ponieważ gra systemem strefowym staje się opłacalna dopiero od ilości trafień w minimum 6 z 8-miu podstref. Więc zróbmy statystykę odstępów trafień dla tak wybranych stref. Tzn jak często takie trafienia się zdarzają w relnych losowaniach. A więc statystyka taka powie nam jakie są czasy odstępów dla każdej ze stref dla gry opłacalnej i pomoże nam ona podjąc decyzję kiedy i którą ze stref wybrać do gry. Musimy zacząć od wprowadzenia do skryptu tablicy losowań danej gry. Ułatwia to wbudowana funkcja $drawtable=delphi_get_draw_arr(); która zwraca do zmiennej $drawtable wynik w postaci tablicy losowań (kontrolne wyświetlenie co zawiera tablica umożliwia funkcja PHP Print_r($drawtable); : A więc w edytorze PHP wpisujemy skrypt:
<? 
// tu wstaw kod PHP
$drawtable  = delphi_get_draw_arr();
Print_r  (  $drawtable  );
?> 

Uruchamiamy klawiszem F9 i jeżeli w opcjach wyjscie ustawiliśmy na np: pole zakłady to w polu tym wyświetli się kontrolna tablica losowań. Kontrolna poniewazłuzy ona do tzw debugowania(sprawdzenia co funkcja wykonuje). W wyniku działania tego prostego skryptu otrzymamy w polu zakłady, właśnie zawartość tablicy losowań:
Array
(
    [0] => Array
        (
            [0] => 2004-02-25
            [1] => 9
            [2] => 10
            [3] => 21
            [4] => 23
            [5] => 31
        )

    [1] => Array
        (
            [0] => 2004-02-26
            [1] => 10
            [2] => 16
            [3] => 23
            [4] => 27
            [5] => 35
        )
...
...
...
    [1912] => Array
        (
            [0] => 2009-06-08
            [1] => 15
            [2] => 30
            [3] => 32
            [4] => 33
            [5] => 35
        )

)

Taką tablicę nazywamy dwuwymiarową.Jej wiersze to kolejne numery losowań [0]..[1912] a kolumny to kolejno [0] - data losowania i [1]..[5], wylosowane liczby.
Co wykonuje skrypt ?. Korzystając z wbudowanej funkcji "delphi_get_draw_arr()" wczytuje do zmiennej $drawtable całą tablicę losowań danej gry z programu lottocad. Po uruchomieniu skryptu wyswietlona zostanie zawartość tablicy losowań ($drawtable). Ale uwaga najlepiej zrobić to np dla gry Express Lotek gdzie ilość losowań jest niewielka. Ponieważ dla multilotka będzie to polecenie wyświetllenia wszystkich losowań a więc polecenie wyświetlenia prawie 75 tysięcy linii i przez pewien czas (kilku minut) może powodować wrażenie że program się zawiesił a on poprostu wykonuje w tym czasie trudne zadanie. Niedogodność ta w następnych wersjach LC będzie zmieniona. Dlatego jeżeli juz chcemy wyświetlać, debugować zawartość tablicy musimy mieć ocenę jak wielka to bedzie tablica. Lub np wyświetlić pierwsze i ostatnie losowanie :
<? 
// tu wstaw kod PHP
$drawtable  = delphi_get_draw_arr();
Print_r  (  $drawtable  [  0  ]);
// wyświetla losowanie o indeksie 0 a więc pierwsze
$ile     =   count  (  $drawtable  )-  1  ;
// polecenie zlicza ile losowań jest w tablicy
/ / i odejmuje 1 ponieważ pierwszy element zaczyna się od zera
Print_r  (  $drawtable  [  $ile  ]);    
// wyświetla losowanie o indeksie $ile a więc ostatnie
?>  
Wyświetli się zawartość tablicy $drawtable a właściwie tylko jej pierwszy i ostatni element w takiej postaci:
 
Array 
( 
[0] => 1996-03-18 
[1] => 4 
[2] => 9 
[3] => 10 
[4] => 16 
[5] => 21 
[6] => 22 
[7] => 23 
[8] => 26 
[9] => 27 
[10] => 34 
[11] => 35 
[12] => 41 
[13] => 42 
[14] => 48 
[15] => 62 
[16] => 66 
[17] => 68 
[18] => 73 
[19] => 76 
[20] => 78 
) 
Array 
( 
[0] => 2005-07-18 
[1] => 3 
[2] => 17 
[3] => 19 
[4] => 22 
[5] => 23 
[6] => 31 
[7] => 33 
[8] => 36 
[9] => 39 
[10] => 40 
[11] => 43 
[12] => 48 
[13] => 51 
[14] => 53 
[15] => 54 
[16] => 63 
[17] => 66 
[18] => 70 
[19] => 72 
[20] => 79 
) 

Pozwoli to zorientować się nam jak taka tablica (array) jest zbudowana i co zawiera. Jak widać jest to tablica w tablicy inaczej mówiąc tablica dwuwymiarowa. Inaczej mówiąc aby dostać się do konkretnej danej trzeba podać dwa indeksy tablicy a więc numer kolejny losowania oraz indeks daty lub wylosowanej liczby. Można to zrobić w ten sposób: $drawtable[0][0] oznacza daną którą jest data pierwszego losowania $drawtable[0][7] oznacza daną którą jest siódmą liczbą pierwszego losowania $drawtable[$ile][0] oznacza daną którą jest datą ostatniego losowania $drawtable[$ile][7] oznacza daną którą jest jest siódmą liczbą ostatniego losowania można to sprawdzić w ten sposób :
 
<? 
// tu wstaw kod PHP
$drawtable  = delphi_get_draw_arr();
$ile     =   count  (  $drawtable  )-  1  ;
// polecenie zlicza ile losowań jest w tablicy
// i odejmuje 1 ponieważ pierwszy element zaczyna się od zera
// i ostatni indeks musi być o jeden mniejszy od ilości elementów
$data1  =  $drawtable  [  0  ][  0  ];
// do zmiennej $data1 ładujemy datę pierwszego losowania
Print     "  $data1  \n"  ;
// to nie jest polecenie Print_r ale wyświetlanie
// tekstu Print(drukuj) które poznaliśmy w lekcji poprzedniej
// znak "\n" oznacza znak ucieczki i znak specjalny przejścia do nowej linii
// w ten sposób każda następna dana będzie wyświetlona w nowej linii
// tak samo postępujemy dla pozostałych danych
$liczba07  =  $drawtable  [  0  ][  7  ];
Print     "  $liczba07  \n"  ;
// wydrukuj liczbę siódmą z pierwszego losowania
$data2  =  $drawtable  [  $ile  ][  0  ];
Print     "  $data2  \n"  ;
// wydrukuj datę ostatniego losowania
$liczba27  =  $drawtable  [  $ile  ][  7  ];
Print     "  $liczba27  \n"  ;
// wydrukuj liczbę siódmą z ostatniego losowania
?>  

Więc juz wiemy :) jak dostać się do poszczególnych losowań i liczb, teraz myślę że pójdzie już z górki ponieważ czeka nas zbudowanie statystyki wg założonego na wstępie algorytmu.
Komentarze
#1 | zen dnia sierpień 03 2009 19:39:12
Ok! Kmicic
To wszystko wygląda b. ładnie ale odpowiedz na takie pytanie
>> Czy sprzedasz w końcu ten sam skrypt który udostępniłeś tej silnej grupie dość dużo wygrywającej w USA ? A tak by był on przystosowany do Express Lotka i ewentualnie do DL ??
Ciekawe czemu się tym nie chwalisz?
Mówi Ci coś nazwa FANTASY 5 ? /KALIFORNIA/
P.o.z
#2 | kmicic dnia sierpień 04 2009 08:46:49
Witam kolegę, zena. Cieszę sie z pierwszego komentarza Wink Zapewne mówisz o skrypcie supermapy. To wersja skryptu w pełni interaktywna. Nie żałuję jej kolegom w Polsce ale starej wersji po awarii dysku nie rozwijam dalej a nowa wersja pracuje Tylko z nowa wersją LottoCada. To swietny interaktywny skrypt oparty na pomyśle "mapy liczb" z LC ale pracuje również na zbiorach liczb. Ma dołoźone statystyki, współpracuje z filtrem MHD no i sposób wyswietlania mapy i zestawów map wstecz jest komunikatywny.
Po inauguracji LottoCad 3.0 skrypt ten i inne skrypty znajdą się w ofercie. Ponieważ pisanie skryptów przez uzytkowników nie zaowocowało wieloma skryptami, zamierzam uruchomic usluge ich pisania na zamówienie wg pomysłów uzytkownika.

Jeszcze trochę cierpliwości.
pzdr.
#3 | zen dnia sierpień 04 2009 13:32:37
Kmicic Dziękuję za odpowiedź .Ciekawe że nie nie wspomniałeś o tym że grupa ta /4 polonusów/ trafili dwa razy 5 trafnych w tej grze Fantasy5 dzięki temu programowi który im zrobiłeś na zamówienie. Potem już nic nie wygrywali ;- bo wiadomo natura polska rozpadli się ,skłócili wiadomo o co ..... Ale i tak są już dobrze ustawieni.
Czy to ten sam skrypt o którym wyżej tu wspominasz ???
P.o.z

ps. Jaki ten świat mały. Gdybym się nie dowiedział i nie napisał to nikt w kraju by nie wiedział że istnieje takie cudo
#4 | statyk dnia sierpień 09 2009 22:05:32
Witam

Nie da sie ukryć , że jestem zwolennikiem programu LC oraz skryptów php pomimo , że jeszcze nie wygrałem żadnej poważnej kwoty.
Raczej jestem pod kreską Smile ale ja to traktuje jako zabawe i rozwijanie szarych komórek Smile . Mysle , że LC mam dopiero opanowany w 50% . Teraz testuje "mape liczb" oraz "raporty na życzenie uzytkowników" i muszę przyznać , że nie jest łatwo a dlaczego?.
Widze tyle mozliwości na prognozowanie liczb , ze aż głowa pęka i nie ma tu zadnej wskazówki na czym należy się skupić . Trzeba samemu doświadczyć czym warto sie zająć.
Oczywiście pomysły nowe znajdą sie i na początek chciałbym miec "filtr graficzny AVG" na wzór grafu losowań. Nie wiem czy da się to zrobic samemu (tabele) w LC za pomocą php . Jeżeli bedzie Kmicic wykonywał takie usługi odplatne to nie mam nic przeciwko ale jednak myśle , ze ich cena nie bedzie wygórowana .
Mam jeszcze pytanie czy LottoCad 3.0 ze skryptami bedzie mozna kupic na płycie ? . Chodzi o to , że moze mi się coś stać z kompem i nie bedę miał szansy drugi raz zainstalowac programu.
pozdr.
#5 | statyk dnia sierpień 12 2009 19:49:11
Witam

Kmicic mam pytanie czy ja mógłbym sam wykonać (oczywiście przy Twoich podpowiedziach) tabelę skryptow powiazanych z wynikami jakie otrzymuje w panelu prognoz LC.
Jak wiesz ilość liczb w cyklach zmienia się za pomocą ustawienia parametrów takich jak:
1. Procent wybierania z list
2. Ile grup
3. Poziom
4. Offset
5. Start nie ruszam - zawsze 1.

Mnie chodzi o to , żeby wykonac tabelę w skryptach z liczbami z panelu prognoz w ten sposób , żeby były uszeregowane wg. cyklów od 1 do ostatniego ale bez liczb powtarzających się. Obecnie wszystko to robię w excelu recznie. Nastepnie tabela taka powinna miec conajmniej 120 prognoz wstecz od ostatniego losowania.
Dobrze by było , żeby prognozy te były podzielone na parki lub trójki i trafienia wybarwiały sie na kolor czerwony .
Powinno to wygladac podobnie jak na AMS pod typami trójek poszczególnych typujących ML.
W ten sposób poprzez zmiane parametrów w panelu prognoz chcialem wyczaić najlepsze ustawienia. Grać na jedną kategorię liczb mija się z celem . Sprawdziłem w Exl , że w kategorii liczb zimnych tylko raz na 10 lat trafila się piątka a w gorących 3 razy w pozostałych ani raz. Najwiecej liczb pada w kategoriach G+S+Z . Wybierając zbiór 12 liczb do gry podzieliłbym na kat. tak: G-6+S-4+Z-2.
pozdr.
#6 | kmicic dnia sierpień 14 2009 17:18:08
Da się oczywiście. Chętnie pomogę. Musisz opracować algorytm. Czyli praktycznie opisac wszystko co robisz ręcznie. Na dziś nie wiem co znaczy bez powtarzajacych się ?.
Prognozy "wykrywają" cykle. Czyli w jaki cykl liczba "wpada" jeżeli wykazuje cykliczność wystepowania naprzemian GORĄCE ZIMNE GORĄCE.
Cykl to ilość dni (losowań), okres przez który liczba jest GORĄCA lub ZIMNA. Czyli jezeli liczba
Jak wyeliminować powtarzające sie liczby jak np cykl 3 jest zbieżny z cyklem 6 w obu mogą sie powtarzać. Aby najbardziej wyeliminowac efekt powtarzania spróbuj zmieniac poziom % wybierania z list ten poziom to procent z listy posortowanej wg czestosci wystepowania liczby w cyklu, czyli kwalifikacja do grupy "zimnej" lub "goracej".
Ale myslę ze jak zapodasz co ma robić skrypt to mozemy go wykonac.:-)
#7 | statyk dnia sierpień 16 2009 11:38:15
Witaj bardzo się ciesze , że pomozesz mi w wykonaniu skryptu. Oczywiście skrypt chciałbym wykonac sam (licze tylko na podpowiedzi w wolnych chwilach). Wiem , ze musze się troszki pomęczyc ale mysle że się coś nauczę.
Skrypt napiszę do Dużego Lotka (baza będzie na bieżąco) w częściach bo myśle, że nie ma sensu odrazu wszystkiego opisywać.
I cz. Tabele prognoz GZ->G oraz ZG->Z
Najpierw musze wkleić obrazki i opisac je, żeby wiadomo było co ma robic skrypt.
W LC klikam w gre DL i otwieram panel prognoz . W opcjach zaznaczam 3 parametry plus skuteczność dla losowan wstecz 64. Nastepnie przechodzę do prognoz i ustawiam : Procent wyb. z list. 50% ; start 1 ; ile grup 16 ; offset 0 ; poziom 3.

Prognoza na 18-08-2009 dla GZ->G wygląda tak:
c= 1 ( 1)-> 24
c= 2 ( 2)-> 25 39
c= 3 ( 3)-> 13 18 36
c= 4 ( 0)->
c= 5 ( 1)-> 31
c= 6 ( 5)-> 5 21 27 30 43
c= 7 ( 6)-> 16 21 28 40 41 46
c= 8 ( 5)-> 28 37 40 41 47
c= 9 ( 3)-> 34 47 49
c=10 ( 3)-> 11 12 49
c=11 ( 4)-> 11 12 22 49
c=12 ( 3)-> 11 12 22
c=13 ( 1)-> 11
c=14 ( 0)->
c=15 ( 0)->
c=16 ( 0)->
Jak widać powyżej w cyklach 9,10,11 powtarza sie liczba 49 a w cyklach 10,11,12,13 powtarza sie liczba 11 i 12 itd. W moich tabeli prognoz na dzień 18-08-2009 wystepuje tylko raz liczba 49,11,12 . Biorę wszystkie liczby z prognozy i dziele je na pary i trójki. W dalszej części analizuje pary i trójki które mam wziąć do gry.
Patrz poniżej moja tabela prognoz .

Panel prognoz w LC bardzo sprytnie wymyśliłeś . Kazdy kto sie tym posługuje bedzie chciał tak ustawic parametry w panelu aby po wygenerowaniu prognozy było jak najmniej liczb i jak najwiecej w nich trafnych w nastepnym losowaniu.
Faktycznie ilośc liczb w prognozie można regulować za pomocą Proc. wyb. z list (i tu można ograniczyc liczby powtarzające się w cyklach) albo Poziomem . Mnie się wydaje, ze lepiej ustawić stały procent a regulować poziomem . Liczby sie powtarzją w cyklach jest ich wiecej ale też jest wiecej trafionych i o to chodzi.

img36.imageshack.us/img36/9403/dlgzg18.png

Pierwsze lekcje php przerobiłem i wszystko sie zgadza tak jak piszesz.
Teraz mam pytania :
1. Od czego zacząc , aby wykonac taką tabele.
2. Jezeli wpisze w edytorze php dolar $ to pokazuje sie tabelka PHP Vars List a pod nią kody np. $APP_PATH ; $GAME_DRAW_ALL ; $GAME_ID ; itd.
Do czego słuza te kody i kiedy nalezy ich uzywać.

I tak się zastanawiam (ale może się myle) czy nie lepiej by było jezeli panele ZAKŁADY i WYNIKI byłyby w kratke a nie w linie na wzór excela wraz z kolumnami A:B:C itd . Może by lepiej było pisac skrypty. Wówczas łatwo można trafic do komórki z której chce sie coś pobrac lub ominąc. To są moje przemyślenia ale mogą byc całkowicie nie realne.
pozdr.

Witam c.d moich przemysleń

W końcu znalazłem odpowiedz na moje pytanie 2 i wiem do czego slużą kody. Również ucieszyła mnie Twoja zapowiedz , że "Z tymi skryptami powstanie potężne narzędzie automatyzujące to co robicie ręcznie lub dorabiacie w Excelu".
Mój algorytm bedzie się różnił od Twojego , który pokazałeś w lekcji "BUDUJEMY PIERWSZY SKRYPT" tym , że liczby w tabeli bedą zmienne i będą pochodzić z wygenerowania przez panel prognoz.
Pokazana tabela ML jest podzielona na 5 stref oraz 8 podstref par.

Moja tabela to 120 stref (prognozy) podzielone na 12 i 8 podstref (12 par oraz 8 trójek).
Koncowy efekt sprowadza się do wyszukanie odległośći (odstepów) trafionych 4 trójek ( zbiór 12 liczb ) ze 120 prognoz wstecz z 70 kombinacji trójkowej lub wyszukanie odległości trafionych 4 par (zbiór 8 liczb ) ze 120 prognoz wstecz z 495 kombinacji par.

Dodatkowy handicap to informacja, że w prognozach ostatnia trójka lub para jest dośc pewna.

Wczoraj 18-08-2009 w DL wylosowano liczby 7,14,17,26,31,41
prognoza ZG->Z była.
c= 1 ( 1)-> 7
c= 2 ( 2)-> 35 44
c= 3 ( 4)-> 10 25 26 29
c= 4 ( 2)-> 1 45
c= 5 ( 1)-> 23
c= 6 ( 2)-> 3 6
c= 7 ( 1)-> 4
c= 8 ( 3)-> 4 5 24
c= 9 ( 4)-> 2 5 15 27
c=10 ( 5)-> 2 5 15 41 45
c=11 ( 5)-> 2 14 15 41 45
c=12 ( 3)-> 14 15 41
c=13 ( 0)->
c=14 ( 0)->
c=15 ( 0)->
c=16 ( 0)->Natomiast prognozy w mojej tabeli wygladają tak:
img198.imageshack.us/img198/2372/dlzgz18.png

Jak widac powyżej trafiły się 4 liczby w 1,2,7 trójce lub 1,3,10 parce.
Z mojej obserwacji to widzę , że średnio w prognozach trafia sie 4 lub 5 co 8-10 losowań. Preferuje systemy strefowe i poluje na 4 , bo gram u buka.
Kmicic napisz mi , czy opisałem jaso ten algorytm a może coś brakuje. Mnie się wydaje , ze nie jest to takie proste . Nie wiem jak umieścić w tabeli 120 prognoz . Trzeba by było zrobic jakąś baze prognoz GZ->G oraz ZG->Z i dopiero z tego pobierać dane aby wyłapać odległości trafień tych 4-ech trójek lub parek . Czy ja nie porywam się z motką na słońce Smile

pozdr.
#8 | zen dnia wrzesień 03 2009 16:22:29
Kmicic mam pytanie
A gdybym chciał podstawić zamiast bazy LC własną bazę lub inaczej tablę ?
To jaką formę musiałaby ona mieć?
Bo wydaje mi się że zapis bazy jest następujący
RRRR-MM-DD; L1;L2;L3;.........L18;L19;L20
RRRR-MM-DD; L1;L2;L3;.........L18;L19;L20
RRRR-MM-DD; L1;L2;L3;.........L18;L19;L20
RRRR-MM-DD; L1;L2;L3;.........L18;L19;L20
Skrypt pokazuje to w postaci kolumny .
Zdaję sobie sprawę że skrypt może pokazać jak sobie tego zażyczymy ....

Głównym pytaniem jest jak skierować pobieranie tabeli z określonego miejsca czyli na moją tabelę .

I jaka powinna być forma zapisu takiej tabeli .
/tak myślę że to może być dowolne natomiast odpowiednio adresując można wybrać odpowiednią liczbę /Sposób w jaki Ty zaprezentowałeś "kolumnowy" jest chyba najłatwiejszy do określenia adresu każdej z liczb.
P.o.z
#9 | kmicic dnia wrzesień 23 2009 10:43:38
kmicic odpowiada :-) statykowi

ten tytuł to po to aby na stronie odpowiedź była widoczna :-)

Ja sie też ciesze że zacząłeś, brawo

Kmicic napisz mi , czy opisałem jaso ten algorytm a może coś brakuje. Mnie się wydaje , ze nie jest to takie proste . Nie wiem jak umieścić w tabeli 120 prognoz . Trzeba by było zrobic jakąś baze prognoz GZ->G oraz ZG->Z i dopiero z tego pobierać dane aby wyłapać odległości trafień tych 4-ech trójek lub parek . Czy ja nie porywam się z motką na słońce


Tak temat nie jest prosty i dzis sie temu przyjrzę i cos poradzimy.
Masz 2.25 więc sprawa bedzie duzo prostsza. LC bedzie generowac jakie chcesz prognozy i mozna je łatwo pobierać.
Jest taki rodzaj generacji w prognozach że wszystko jest wyswietlane, a wiec trafienia ilość liczb w prognozie i liczby.
Na początek podrzuce ci skrypt który coś z tymi prognozami robi, zanalizuj go a potem zajmiemy się Twoim algorytmem. Skrypt ten zlicza trafienia prognoz do tablicy, sortuje ja i wyswietla w kolejnosci wg współczynnika (najwiecej trafień w najmniejszej ilosci liczb). To taki skrypt roboczy ale daje obraz jak do tego mozna podejść.

PHP
  1.  
  2. <?php
  3. /*
  4. Skrypt zobrazuje nowe mozliwosści automatyzacji PHP programu LottoCad.
  5. Te nowe możliwosci zostały zaimplementowane w wersji 2.25i oczywiscie
  6. w tworzonej wersji 3.0.
  7. Skrypt wywołuje wielokrotnie Prognozy z ustawionymi parametrami, pobierajac
  8. za każdym razem dane z pola zakłady. Dane te są sprawdzane i analizowane
  9. i zasadniczym zadaniem tego skryptu jest wybranie takich cykli c które
  10. zapewniaja najwiekszą ilość trafień w najmniejszej ilosci liczb (dla liczb
  11. goracych, oraz najmniejszej ilosci trafień dla najwiekszej ilosci liczb dla
  12. liczb zimnych.
  13. */
  14. // deklaracja zmiennych sterujących
  15.  
  16. $hot_percent    = 50;    // 50% wybierania z list zimne-gorące
  17. $offset_start   =  1;    // Zrób od offsetu = 1
  18. $offset_stop    = 10;    // analizuj do offsetu = 25 losowań wstecz
  19. $cykl_start     =  1;    // od okresów 1 losowania w paczce (cyklu)
  20. $cykl_count     = 50;    // aż do okresów 1+20 losowań w paczce (cyklu)
  21. $cykl_level     =  3;    // jeden poziom zagłebień cykli dla GZG bedzie to
  22.                          // jeden zimny i jeden gorący liczac po losowań=cykl wstecz
  23. $cykl_mode      = "GZG"; // zimny-goracy wstecz, przyszły goracy
  24.  
  25. // dotąd mozna modyfikować dane
  26.  
  27. // ustawienie parametrów w polach na panelu Prognozy
  28. delphi_put_input('PREDICT_QUANT_FROM',$cykl_start);
  29. delphi_put_input('PREDICT_QUANT_COUNT',$cykl_count);
  30. delphi_put_input('PREDICT_HOT_PART_PERCENT',$hot_percent);
  31. delphi_put_input('PREDICT_QUANT_LEVEL',$cykl_level);
  32. delphi_put_input('PREDICT_NOT_DISPLAY_PERCENT',"1");
  33. // ustawienie checboxów (opcji) w panelu Prognoz
  34. lc_macro_cmd('PREDICT_SET_OUT_MEMO_TICKET',0);
  35. lc_macro_cmd('PREDICT_SET_AMSMODE',0);
  36. lc_macro_cmd('PREDICT_SET_AMSRIPMODE',0);
  37. lc_macro_cmd('PREDICT_SET_AUTOBACK_AMS',0);
  38. lc_macro_cmd('PREDICT_SET_FREQ_REPORT',0);
  39. lc_macro_cmd('PREDICT_SET_EXPERT_MODE',1);
  40. lc_macro_cmd('PREDICT_SET_EXPORT_MHD',0);
  41. lc_macro_cmd('PREDICT_SET_FORCE_ZERO_COLD',0);
  42. lc_macro_cmd('PREDICT_SET_AUTO_CHECK',0);
  43. lc_macro_cmd('PREDICT_SET_AUTO_GEN_OFFSET',0);
  44. lc_macro_cmd('PREDICT_SET_CHART_DENSITY_ON',0);
  45.  
  46. // ustalamy zakres tablicy losowań,
  47. // nie potrzeba więcej niż max offset
  48. $range=$offset_stop+1;
  49. // pobieramy tablicę wyników losowań
  50. $drawtable=delphi_get_draw_arr();
  51. // odwrócimy tablicę losowań najstarsze
  52. // losowania na początku tablicy
  53. $drawtable=array_reverse($drawtable);
  54.  
  55. // deklaracja pustej tablicy
  56. $drawrange=array();
  57.  
  58. // zbudujemy tablice o $range (zakres losowań)
  59. // losowaniach pierwsze są losowania najstarsze (datą)
  60. // jednocześne pozbedziemy się dat jako pierwszego
  61. // elementu tablicy
  62.  
  63. $dat=array();
  64.  
  65. for($i=0;$i<$range;$i++)
  66.    {
  67.    $dat[]=array_shift($drawtable[$i]);
  68.    $drawrange[]=$drawtable[$i];
  69.    }
  70.  
  71. $hot_arr=array();
  72. $hit_arr=array();
  73. // petla for dla wszystkich offsetów
  74. for ($i=$offset_start;$i<=$offset_stop;$i++) {
  75. delphi_set_progress_bar($offset_start,$offset_stop,$i); // ustawienie wskażnika postepu
  76. $tmp_arr=array(); // tablica tymczasowa
  77.  delphi_put_input('PREDICT_DRAW_OFFSET',$i); // kolejny offset
  78.  lc_macro_cmd('PREDICT_GZG_GO');             // wykonaj analizę GZG
  79.  $text=delphi_str_memob();                   // pobierz wynik analizy
  80.  $lines=preg_split("@\r?\n@",$text);   // rozbij tekst na linie
  81.    foreach($lines as $key=>$line) {          // dla kazdej linii
  82.    // znajdź jaki cykl,ilość typów,ilość trafień
  83.    preg_match("@c=\s?(\d+)\s\([ 0-9]+\)->\s\(\s?(\d+):\s?(\d+)[^\%]+\%\)\s+([0-9 ]+)@",$line,$capt);
  84.    /* znalezione wyrażeniem regularnym wartosci są w tablicy przechwytujacej 
  85.    $capt[] tablica z tekstu przechwyciła tylko te fragmenty linii które w wyrażeniu 
  86.    regularnym są w nawiasach ()
  87.    wyjasnienie znaczenia wyrażenia regularnego :
  88.    Wyrażenia regularne nazywam cudem świata to jedno z epokowych odkryć ludzkości
  89.    jest niesamowicie skomplikowana sprawa ale jakże logiczna. To jezyk wyszukiwania tekstów.
  90.    powszechnie uzywany w programowaniu.
  91.    
  92.    @c=\s?(\d+)\s\([ 0-9]+\)->\s\(\s?(\d+):\s?(\d+)[^\%]+\%\)\s+([0-9 ]+)@
  93.    wyrażenie będzie szukac w liniach prognoz o budowie :
  94.    c= 2 ( 0)-> ( 3: 0=   0,0%) 21 22 33 
  95.    
  96.    @...@ znaki na końcu wyrażenia to tagi sterujace moga byc 
  97.          dowolne znaki inne niż A-z_0-9  no i aby nie wystepowały w tekscie
  98.    c=    szuka fragmentu zaczynajacego się tekstem c= , u nas to kolejne 
  99.          cykle c=1 c=2 tak sie zaczynają
  100.    (\d+) ujety w nawiasy nawiasy oznaczaja przechwyć znaki a znak \d oznacza 
  101.          cyfrę no 0..9 znak + oznacza znajdź jedno lub wiecej wystąpień 
  102.          poprzedniego znaku czyli cyfry
  103.    \s    to jeden znak biały a wiec np spacja
  104.    \(    znak nawiasu poprzedzony znakiem ucieczki \ mówi nie traktuj nawiasu 
  105.          jako nawiasu przechwytywania a traktuj go jak normalny znak
  106.    [ 0-9]+ oznacza szukaj znaków z zakresu znaków ujętych w nawiasach kwadratowych 
  107.             tu liczby 0-9 lub spacje,a plus jak już wiemy oznacza jeden lub wiecej razy.
  108.    \)        znak nawiasu poprzedzony znakiem ucieczki \ mówi nie traktuj nawiasu 
  109.          jako nawiasu przechwytywania a traktuj go jak normalny znak
  110.    ->\s  oznacza szukaj takich znaków w tekscie one tam w linijkach analizowanych musza być
  111.          a więc strzałka i spacja.
  112.    (..) nawias mówi przechwyć całe wyrażenie ujete w nawiasy. Jeżeli używamy więcej nawiasów
  113.         muszą one byc pozamykane wewnątrz a wiec np (txt1(txt2))
  114.    \s?  \s oznacza jak wiemy biały znak/spację/ znak ? mówi może wystąpić lub nie
  115.          dlatego że liczby są formatowane i moze być sytuacja że spacja jest jezeli to 
  116.          pojedyncza cyfra np [ 1] lub nie ma spacji np [12].
  117.    (\d+) to już znamy czyli cyfra 1 lub wiecej razy i ja przechwyć do tablicy $capt.
  118.    [^\%]+ nawiasy [..] jak już wiemy oznaczają rodzinę znaków w nich ujetych
  119.           jezeli pierwszym znakiem w nawiasach [^abc] jest daszek ^ oznacza
  120.           znaki w nawiasach znajdź wszystkie które nie są tymi znakami.
  121.           a więc że plus oznaczajeden lub wiecej razy to wyrażenie znajdze wszystkie
  122.           znaki które nie są znakami procentu.
  123.    \%\)\s+ oznacza znajdż kolejno znak \% procentu, znak \) nawiasu otwartego \s+ spację
  124.            jeden lub wiecej razy
  125.     ([0-9 ]+) oznacza przechwyć liczby i spacje z rodziny znaków w nawiasach kwadratowych 
  126.            jeden lub wiecej razy.
  127. po analizie linii : c= 2 ( 0)-> ( 3: 0=   0,0%) 21 22 33
  128. rozkazem PHP:  
  129. preg_match("@c=\s?(\d+)\s\([ 0-9]+\)->\s\(\s?(\d+):\s?(\d+)[^\%]+\%\)\s+([0-9 ]+)@",$line,$capt);
  130. tablica $capt bedzie zawierała to czego szukamy :
  131.  
  132. Array
  133. (
  134.     [0] => c= 2 ( 0)-> ( 3: 0=   0,0%) 21 22 33 <- tablica o ineksie[0] zawsze przechwytuje całość
  135.     [1] => 2 <- jaki to cykl
  136.     [2] => 3 <- ilość liczb typowanych
  137.     [3] => 0 <- ilość trafionych
  138.     [4] => 21 22 33 < jakie to były liczby.
  139. )
  140.  
  141. tablicę wyswietla się rozkazem print_r($capt);
  142.  
  143. (wciśnij F1 w edytorze PHP jezeli kursor stoi na rozkażie to przecztrasz o tym
  144. rozkazie):
  145.    */
  146.    $cykl=$capt[1];
  147.    $typs=$capt[2];
  148.    $hits=$capt[3]; // zabieramy co przechwyciła analiza linii
  149.    $nums=preg_split("@[ ]+@",$capt[4]); //liczby rozbijamy na tablicę, spacja jako znak podziału
  150.    // dane przechwycone umieszczamy w tablicy własnej z polami typ,hit,num
  151.    $tmp_arr[$cykl]=array("typ"=>$typs,"hit"=>$hits,"num"=>$nums);
  152.    // obliczamy wsółczynnik dobroci jest większy gdy jest mniej liczb a więcej trafień
  153.    // zabezpieczamy sie też przed dzieleniem przez zero jeżeli typowanyc było zero
  154.    // to współczynnik przyjmij za zero
  155.    $hot_factor = ($typs>0) ? $hits/$typs : 0;
  156.    // dodajemy współczynnik do tablicy o kluczu równym cyklowi prognozy
  157.    $hot_arr[$cykl]+=$hot_factor;
  158.    // dodajemy ilość trafień do tablicy o kluczu równym cyklowi prognozy
  159.    $hit_arr[$cykl]+=$hits;
  160.    }
  161.  
  162.  
  163. } // zamknięcie głównej petli analizy
  164. // sortujemy tablice współczynników i wyswietlamy
  165. asort($hot_arr);
  166. print_r($hot_arr);
  167. // tablica pokaże posortowane cykle wg współczynnika
  168.  
  169. // sortujemy tablice ilości trafień w cykl i wyswietlamy
  170. asort($hit_arr);
  171. print_r($hit_arr);
  172. // tablica pokaże posortowane cykle wg ilości trafień
  173.  
  174. // z ciekawości wyswietl tablicę tymczasową
  175. // z niej mozna korzystać obrabiając dane dalej
  176. print_r($tmp_arr);
  177. ?>
  178.  


pozdr AK
Dodaj komentarz
Zaloguj się, aby móc dodać komentarz.
Oceny
Tylko zarejestrowani użytkownicy mogą oceniać zawartość strony

Zaloguj się lub zarejestruj, żeby móc zagłosować.

Świetne! Świetne! 50% [1 głos]
Bardzo dobre Bardzo dobre 50% [1 głos]
Dobre Dobre 0% [Brak oceny]
Średnie Średnie 0% [Brak oceny]
Słabe Słabe 0% [Brak oceny]
Logowanie
Nazwa użytkownika

Hasło



Nie masz jeszcze konta?
Zarejestruj się

Nie możesz się zalogować?
Poproś o nowe hasło
Sklep LottoCad
Wyniki Lotto
Odds(szans) Calculator)
Hyde Park
Wygenerowano w sekund: 1.31 149,450 Unikalnych wizyt