Korzystanie z witryny lottocad.pl oznacza zgodę na wykorzystywanie plików cookie, z których niektóre mogą być już zapisane w folderze przeglądarki. Więcej informacji mozna znależć w Polityce plików cookies.
Akceptuje Polityke plików cookies (Nie pokazuj mi więcej tego powiadomienia).
  • Odwiedź nasze Forum LottoCAD , spróbuj sił w Lidze typerów AMS.
  • Program LottoCad to doskonałe narzedzie i rozrywka dla tych którzy lubią przewidywać układy i liczby w losowaniach lotto.
  • Program LottoCad dostepny jest w nowej wersji 2.32. Zniżka 50% dla tych którzy zakupili wersję 2.25 do 2.31. Kup teraz
  • Zakup LottoCAD-a 2.32 się opłaca, instalacja zawiera rozbudowany i wbudowany skrypt SUPERMAPA i drukuje nowe kupony jak program SLIP-CAD. Zamiast kupować trzy programy teraz jest wszystko w jednym. Kup teraz
  • Z pewnoscią zaciekawi Cię nowy artykuł wprowadzający do LottoCAD-a 2.32 na stronie trzeciej artykułu opisana jest rewelacyjna a mało znana metoda prognozowania liczb z pomocą programu LottoCad, artykuł jest kontynuowany i na stronie 4 znajdziesz informacje o skrypcie SUPERMAPA ... . Zapraszam

Program LottoCad w wersji 2.32 to doskonałe narzędzie dla tych co lubią kombinacje z liczbami. To doskonały sposób na spędzanie wolnego czasu i zabawę w długie wieczory tej zimy i jesieni. Przewidywanie zdarzeń losowych i doskonałe zajęcie w tym czasie. Czasem nie jest to zabawa a czasem ma nawet dobre strony w postaci premii za realne wygrane Przeczytaj więcej w artykule na ten temat ...

  • Multi Multi (PL)
  • 2024-04-23 14:00:00
  • 1 4 7 12 14 18 19 35 36 44 49 51 55 57 60 61 62 64 69 80
  • 2024-04-22 22:00:00
  • 7 9 12 13 15 18 29 36 40 53 55 59 60 63 65 69 70 71 73 80
  • 2024-04-22 14:00:00
  • 1 4 12 13 17 18 22 26 27 31 36 41 48 49 54 55 61 62 63 65
  • Lotto (PL)
  • 2024-04-20 22:00:00
  • 2 4 27 29 43 47
  • 2024-04-18 22:00:00
  • 2 3 10 36 38 42
  • 2024-04-16 22:00:00
  • 2 6 25 26 30 42
  • Mini Lotto (PL)
  • 2024-04-22 22:00:00
  • 24 27 33 38 39
  • 2024-04-21 22:00:00
  • 11 23 26 30 36
  • 2024-04-20 22:00:00
  • 11 15 16 21 37
  • KENO (DE)
  • 2024-04-22
  • 3 5 11 13 23 24 26 27 30 31 33 34 39 40 48 52 59 61 62 69
  • 2024-04-21
  • 4 6 7 10 13 19 20 21 23 29 33 35 39 44 53 56 58 59 62 66
  • Little Lotto (USA)
  • 2019-02-17 14:00:00
  • 4 10 23 31 35
  • 2019-02-16 22:00:00
  • 13 14 20 27 44

OBLICZENIA I WYNIKI

Więc spróbujemy wyprowadzić (sformatować) w sposób czytelny dane i obliczyć niezbedne statystyki zadanych stref.

Ponieważ w przykładzie poprzednim obliczyliśmy tablicę odstepów z z poziomem trafień równym 6 "$HIT_MIN_LIMIT=6" a chcemy miec ststystyki również dla większych poziomów trafień więc pętlę obliczającą tablicę odstepów obejmiemy pętlą która będzie zmieniać własnie poziom trafień (zmienną $HIT_MIN_LIMIT) w granicach od 6 do 8 trafień:

$HIT_MIN_LIMIT  =  6  ;
$period  =  array  ();
// Tu wstawimy zakres pętli For dla zmiennej $HIT_MIN_LIMIT
// aby obliczyć tablice odstępów również dla innych poziomów
// minimalnych trafień np 6,7 i 8
For     (  $HIT_MIN_LIMIT  =  6  ;  $HIT_MIN_LIMIT  <=  8  ;  $HIT_MIN_LIMIT  ++)
// czyli dla zmiennej $HIT_MIN_LIMIT zmieniającej się od 6 do 8
// zwiększanej "po drodze" o jeden (inkrementacja ++)
// oblicz tablice odstępów
{
//------ Pętla obliczająca tablicę odstępów - początek
$zone  =  1  ;
foreach     (  $result     as     $strname  =>  $arr  )
{
foreach     (  $arr     as     $nrlos  =>  $hit  )
if     (  $nrlos  >  0  )
{
if     (  $hit  [  "hits"  ]>=  $HIT_MIN_LIMIT  )
{
$period  [  $nrlos  ][  $HIT_MIN_LIMIT  ][  $zone  ]=  0  ;        }
else     $period  [  $nrlos  ][  $HIT_MIN_LIMIT  ][  $zone  ]=  $period  [  $nrlos  -  1  ][  $HIT_MIN_LIMIT  ][  $zone  ]+  1  ;
}
$zone  ++;
}
}
//------ Pętla obliczająca tablicę odstępów - koniec

i testujemy wyświetlając zawartość tablicy $period na końcu programu umieszczając polecenie "print_r ($period). Program nieco długo to robi ponieważ wyprowadza prawie 100 tysięcy linii ale czeka nas ciekawostka. Okazuje się że dwie (druga i czwarta) z pięciu stref jeszcze od początku historii losowań nie trafiły pełnych sześciu stref:

[3011] => Array
(
[6] => Array
(
[1] => 36
[2] => 6
[3] => 14
[4] => 28
[5] => 18
)
[7] => Array
(
[1] => 71
[2] => 6
[3] => 19
[4] => 197
[5] => 31
)
[8] => Array
(
[1] => 121
[2] => 3011
[3] => 1350
[4] => 3011
[5] => 693
)
)
) 

Mamy tablicę odstepów więc możemy formatować wyjście a więc stworzyć czytelny raport uzupełniony o statystyki i histogramy rozkładu trafień.

Na początku zajmiemy się czytelnym wyświetleniem tablicy odstepów. Chcemy ją wyświetlić w postaci :

Trafienia      strefy 1           strefy 2            strefy 3            strefy 4            strefy 5
nr_losow     6    7    8       6     7     8       6     7     8       6     7     8       6     7     8
---------   ---- ---- ----    ----  ----  ----    ----  ----  ----    ----  ----  ----    ----  ----  ----

Jak będziemy składać (wybierać z tablicy) poszczególne wiersze raportu więc musimy mieć kolejno do dyspozycji numer losowania, kolejne strefy a w nich kolejne wartości odstepów.Raport również można tak skonstruować aby odstępy gdzie nie było trafień były wyświetlane w postaci pustych pól albo znaku kropki. Wówczas tablica taka jest bardziej czytelna.

Skonstruujemy najpierw (bardzo dobry zwyczaj w programowaniu) sekwencję pętli która odda nam dane w takiej kolejności jak zaprojektowaliśmy składanie poszczególnych elementów wierszy.

foreach     (  $period     as     $nrlos  =>  $period_a  )
{
// iteruje po kolejnych numetach losowań
// w każdym kroku zwraca numer losowania i tablicę odstępów
// dla tego numeru losowania
foreach     (  $period_a     as     $zone  =>  $period_z  )
// iteruje po kolejnych strefach
// w każdym kroku zwraca numer strefy i tablicę odstępów
// dla tego numeru strefy
{
foreach     (  $period_z     as     $limit  =>  $value  )
// iteruje wartości odstępów dla poszczególnych limitów
// w kazdym kroku zwraca wartość limitu i odstęp
{
}
}
} 

Ale ponieważ zaprojektowaliśmy kolejność wybierania wg porządku : numer losowania, strefa, wartości wg limitu trafień a tablicę mamy zrobioną wg porządku :

$period[$HIT_MIN_LIMIT][$nrlos][$zone]

czyli porządku : limit trafień, numer losowania, strefa więc należy zmodyfikować fragmenty kodu który oblicza tablicę odstepów i tam gdzie kod wykonuje operacje na tablicy zmienić kolejność na :

$period[$nrlos][$zone][$HIT_MIN_LIMIT]

wówczas uzyskamy właściwą kolejność wybierania z tablicy. Więc fragment naszego kodu po modyfikacji wyglądać bedzie:

   
// ------------------------------------------------------
// zbuduj tablicę odstępów dla wszsytkich stref i losowań
// ------------------------------------------------------
$HIT_MIN_LIMIT  =  6  ;
$period  =  array  ();
For     (  $HIT_MIN_LIMIT  =  6  ;  $HIT_MIN_LIMIT  <=  8  ;  $HIT_MIN_LIMIT  ++)
// czyli dla zmiennej $HIT_MIN_LIMIT zmieniającej się od 6 do 8
// zwiększanej "po drodze" o jeden (inkrementacja ++)
// oblicz tablice odstępów
{
//------ Pętla obliczająca tablicę odstępów - początek
$zone  =  1  ;
foreach     (  $result     as     $strname  =>  $arr  )
{
foreach     (  $arr     as     $nrlos  =>  $hit  )
if     (  $nrlos  >  0  )
{
if     (  $hit  [  "hits"  ]>=  $HIT_MIN_LIMIT  )
{
$period  [  $HIT_MIN_LIMIT  ][  $nrlos  ][  $zone  ]=  0  ;        }
else     $period  [  $HIT_MIN_LIMIT  ][  $nrlos  ][  $zone  ]=  $period  [  $HIT_MIN_LIMIT  ][  $nrlos  -  1  ][  $zone  ]+  1  ;
}
$zone  ++;
}
}
// Wy ś wietlamy tablicę odstępów w postaci
// Trafienia    strefy 1           strefy 2      ...     strefy 5
// nr_los     6    7    8       6     7     8            6     7     8
// ------   ---- ---- ----    ----  ----  ----         ----  ----  ----
foreach     (  $period     as     $nrlos  =>  $period_a  )
{
// iteruje po kolejnych numetach losowań
// w każdym kroku zwraca numer losowania i tablicę odstępów
// dla tego numeru losowania
foreach     (  $period_a     as     $zone  =>  $period_z  )
// iteruje po kolejnych strefach
// w każdym kroku zwraca numer strefy i tablicę odstępów
// dla tego numeru strefy
{
foreach     (  $period_z     as     $limit  =>  $value  )
// iteruje wartości odstępów dla poszczególnych limitów
// w kazdym kroku zwraca wartość limitu i odstęp
{
}
}
}

Teraz mozna wyprowadzać wyniki we własciwej kolejności :

Teraz w pętlach iterujących po tablicy (już bez komentarzy) i w miarę dostępności danych będę składał kolejne wiersze raportu. Aby uzyskać ładne formatowanie tabeli tekstowej użyłem funkcji sprintf. Funkcja ta jest dobrze opisana w pliku pomocy i mozna się z nim zapoznać. Do składania napisów służy operator składania (dodawania) napisów (stringów). Jest to operator kropki.

przykłady

$napis="ala"." ma"." kota"; kropki między napisami powodują że stringi, napisy są łączone i zmienna $napis, będzie miała wartość "ala ma kota".

a teraz operacja :

$napis=$napis." i dwa psy"; spowoduje że zmienna $ napis będzie miała wartość "ala ma kota i dwa psy".

istnieje operator uproszczony dodawania stringów i ma postać :

$napis.=" i dwa psy";

i efekt jego działania jest dokładnie taki sam jak wyżej ale zapis jest uproszczony.

Dysponując danymi we wnetrzu każdej z pętli można złożyć raport wiersz po wierszu. Pełny zapis skryptu wyświetlającego tablicę odstepów trafień w strefy zamieszczam niżej :

<?
// tu wstaw kod PHP
$drawtable=delphi_get_draw_arr();   
$strefa1  =  array  (  array  (   1  ,   9  ),
array  (   2  ,  10  ),
array  (   3  ,  11  ),
array  (   4  ,  12  ),
array  (   5  ,  13  ),
array  (   6  ,  14  ),
array  (   7  ,  15  ),
array  (   8  ,  16  ));
$strefa2  =  array  (  array  (  17  ,  25  ),
array  (  18  ,  26  ),
array  (  19  ,  27  ),
array  (  20  ,  28  ),
array  (  21  ,  29  ),
array  (  22  ,  30  ),
array  (  23  ,  31  ),
array  (  24  ,  32  ));
$strefa3  =  array  (  array  (  33  ,  41  ),
array  (  34  ,  42  ),
array  (  35  ,  43  ),
array  (  36  ,  44  ),
array  (  37  ,  45  ),
array  (  38  ,  46  ),
array  (  39  ,  47  ),
array  (  40  ,  48  ));
$strefa4  =  array  (  array  (  49  ,  57  ),
array  (  50  ,  58  ),
array  (  51  ,  59  ),
array  (  52  ,  60  ),
array  (  53  ,  61  ),
array  (  54  ,  62  ),
array  (  55  ,  63  ),
array  (  56  ,  64  ));
$strefa5  =  array  (  array  (  65  ,  73  ),
array  (  66  ,  74  ),
array  (  67  ,  75  ),
array  (  68  ,  76  ),
array  (  69  ,  77  ),
array  (  70  ,  78  ),
array  (  71  ,  79  ),
array  (  72  ,  80  ));
$allzone  =  array  (  "strefa1"  =>  $strefa1  ,
"strefa2"  =>  $strefa2  ,
"strefa3"  =>  $strefa3  ,
"strefa4"  =>  $strefa4  ,
"strefa5"  =>  $strefa5  );
//print_r($allzone);
//$backdraw=array_reverse($drawtable);
$result  =  array  ();
foreach     (  $drawtable     as     $nrlos  =>  $losowanie  )
{
$data  =  array_shift  (  $losowanie  );
// wybiera datę i skraca tablicę $losowanie o datę
foreach     (  $allzone     as     $strname  =>  $strefaX  )
{
$hits  =  0  ;
$hit1  =  0  ;
$hit2  =  0  ;   // wyzerowanie liczników
foreach     (  $strefaX     as     $strefa  )
{
$hitzone  =  array_intersect  (  $strefa  ,   $losowanie  );
$hita  =  count  (  $hitzone  );   // zlicza ilo ś ć trafień
if     (  $hita  ==  1  )   $hit1  ++;   // zlicza trafienia pojedyńcze w strefę
if     (  $hita  ==  2  )   $hit2  ++;   // zlicza trafienia podwójne w strefę
if     (  $hita  >  0  )    $hits  ++;   // zlicza trafione strefy
}
$result  [  $strname  ][  $nrlos  ][  "hits"  ]=  $hits  ;
$result  [  $strname  ][  $nrlos  ][  "hit1"  ]=  $hit1  ;
$result  [  $strname  ][  $nrlos  ][  "hit2"  ]=  $hit2  ;
$result  [  $strname  ][  $nrlos  ][  "date"  ]=  $data  ;
}
}
$lastnrlos  =  $nrlos  ;
// ------------------------------------------------------
// zbuduj tablicę odstępów dla wszsytkich stref i losowań
// ------------------------------------------------------
$HIT_MIN_LIMIT  =  6  ;
$period  =  array  ();
For     (  $HIT_MIN_LIMIT  =  6  ;  $HIT_MIN_LIMIT  <=  8  ;  $HIT_MIN_LIMIT  ++)
// czyli dla zmiennej $HIT_MIN_LIMIT zmieniaj ą cej się od 6 do 8
// zwiększanej "po drodze" o jeden (inkrementacja ++)
// oblicz tablice odstępów
{
//------ Pętla obliczająca tablicę odstępów - pocz ą tek
$zone  =  1  ;
foreach     (  $result     as     $strname  =>  $arr  )
{
foreach     (  $arr     as     $nrlos  =>  $hit  )
if     (  $nrlos  >  0  )
{
if     (  $hit  [  "hits"  ]>=  $HIT_MIN_LIMIT  )
{
$period  [  $nrlos  ][  $zone  ][  $HIT_MIN_LIMIT  ]=  0  ;        }
else     $period  [  $nrlos  ][  $zone  ][  $HIT_MIN_LIMIT  ]=  $period  [  $nrlos  -  1  ][  $zone  ][  $HIT_MIN_LIMIT  ]+  1  ;
}
$zone  ++;
}
}
// Wy ś wietlamy tablicę odstępów w postaci
// Trafienia    strefy 1           strefy 2      ...     strefy 5
// nr_los     6    7    8       6     7     8          6     7     8
// ------   ---- ---- ----    ----  ----  ----       ----  ----  ----
Print     "Trafienia    strefy 1          strefy 2        strefy 3           strefy 4           strefy 5
nr_los     6    7    8       6    7    8      6    7    8        6    7    8       6     7     8
------   ---- ---- ----    ---- ---- ----    ---- ---- ----    ---- ---- ----    ----  ----  ----\\n"  ;
foreach     (  $period     as     $nrlos  =>  $period_a  )
{
// iteruje po kolejnych numetach losowań
// w każdym kroku zwraca numer losowania i tablicę odstępów
// dla tego numeru losowania
$row  =  sprintf  (  "%6d   "  ,  $nrlos  );
// polecenie spritf(format,argument formatowany)
// wypisuje numer losowania jako liczbę całkowit ą 
// na 6 pozycjach dosunięt ą  do prawej oraz trzy spacje odstępu
foreach     (  $period_a     as     $zone  =>  $period_z  )
// iteruje po kolejnych strefach
// w każdym kroku zwraca numer strefy i tablicę odstępów
// dla tego numeru strefy
{
foreach     (  $period_z     as     $limit  =>  $value  )
// iteruje wartości odstępów dla poszczególnych limitów
// w kazdym kroku zwraca warto ś ć limitu i odstęp
{
if     ((  $nrlos  ==  1  )   or     (  $lastnrlos  ==  $nrlos  ))
// jeżeli jest to pierwsze lub ostatnie losowanie
// wy ś wietlaj warto ś ć bież ą cego odstępu
{
$row  .=  sprintf  (  "%4d "  ,  $value  );
continue  ;
}
if     (  $value  ==  0  )
// jeżeli wyst ą piło trafienie w strefę to drukowany
$row  .=  sprintf  (  "%4d "  ,  $period  [  $nrlos  -  1  ][  $zone  ][  $limit  ]);
// wyświetlaj odstęp z poprzedniego losowania
else
// w przeciwnym przypadku nie ma trafienia
// i wyświetlaj znak kropki
$row  .=  "   . "  ;
}
$row  .=  "   "  ;   // dodaj 4 spacje między grupami
}
print     "  $row  \\n"  ;    // wyprowadż - drukuj nastepny wiersz
}
?>

W następnej lekcji dodamy trochę statystyk zbiorczych i histogramy (czyli jaki jest rozkład najczęstszych odstepów) trafień.