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 ...
Ta lekcja kończy temat związany ze skryptem statystyk odstępów trafien w strefy liczb multilotka. Poniżej zamieszczam tekst żródłowy skryptu a użyte komentarze z pewnością wyjasnią wam jak on działa.
<?php
// 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);
//exit;
//$backdraw=array_reverse($drawtable);
$result = array ();
foreach ( $drawtable as $nrlos => $losowanie )
{
$data = array_shift ( $losowanie );
// wybiera datę i skraca tablicę $losowanie o datę
//print_r($drawtable[0]);
//exit;
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 ;
$items = count ( $drawtable );
// ------------------------------------------------------
// 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 ++){
$zone = 0 ;
foreach ($result as $strname=>$arr){ // wszystkie strefy
$zone ++; // numeruje strefy od 1
foreach ($arr as $nrlos =>$hit){ // wszystkie numery losowań
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;
}
} // koniec pętli nr losowań
} // koniec pętli dla stref
} // koniec pętli dla limitów trafień
// 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" ;
$acnt = array ();
$hist = array ();
$persum = array ();
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
$oldvalue = $period [ $nrlos - 1 ][ $zone ][ $limit ];
$row .= sprintf ( "%4d " , $oldvalue );
// wyświetlaj odstęp z poprzedniego losowania
$hist [ $zone ][ $limit ][ $oldvalue ]++;
// zwiększa o jeden pozycję histogramu dla kazdej strefy
// i kazdego poziomu trafień
$acnt [ $zone ][ $limit ]++;
// zlicza trafienia dla stref i poziomów trafień
$persum [ $zone ][ $limit ]+= $oldvalue ;
}
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
}
print "<--------------- statystyki -------------->\\n" ;
//$limit=6;
for ( $zone = 1 ; $zone <= 5 ; $zone ++)
// pętla dla wszystkich stref
for ( $limit = 6 ; $limit <= 8 ; $limit ++)
// pętla dla wszystkich limitów trafień
{
$hista = $hist [ $zone ][ $limit ];
// czyta z tablicy tablicę histogramów trafień
// dla określonej strefy i określonego limitu trafień
$cnthit = $acnt [ $zone ][ $limit ];
// czyta z tablicy ilość trafień
// dla określonej strefy i określonego limitu trafień
if ( $cnthit > 0)
$avghit = $items / $cnthit ;
else
$avghit = 0 ;
// oblicza średnią ilość losowań między trafieniami
$title = "Histogram trafień 100 odstępów\\n" ;
$line = str_repeat ( "-" , strlen ( $title )). "\\n" ;
$line .="ods hit histogram ....\\n";
$line .= str_repeat ( "-" , strlen ( $title )). "\\n" ;
print $line ;
print sprintf ( "Strefa numer : %3d\\n" , $zone );
print sprintf ( "Limit trafień : %3d\\n" , $limit );
print $line ;
print sprintf ( "Ilość trafień : %3d\\n" , $cnthit );
print sprintf ( "Średnia trafień : %3.1f\\n" , $avghit );
print $line ;
print $title ;
print $line ;
// wyprowadzenie tytułów i statystyk podstawowych
for ( $i = 0 ; $i <= 99 ; $i ++)
// pętla sprawdza histogram trafień, jakie odstępy trafiają
// najczęściej dla danej strefy i limitu trafień
{
$n = $hista [ $i ];
$line = sprintf ( "%2d %3d %s\\n" , $i , $n , str_repeat ( "=" , $n ));
print $line ;
// drukuje pseudowykres histogram rozkładu trafień
}
}
?>
Powinno być proste :-), jeżeli nie w następnych artykułach może bedzie lepiej.
Dobrym zwyczajem byłoby aby podczas przeglądania wklejać skrypty do edytora PHP i uruchamiać je sprawdzając co jest wykonywane etapami.
Co wynika ze statystyk ?.
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 ----- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 . . . . . . . . . . . . . . . 3 . . . . . . . . . . . . . . . ... 4322 27 . . 7 . . . . . . . . . . . 4323 . . . . . . . . . . . . . . . 4324 . . . . . . . . . . . . . . . 4325 . . . . . . . . . 4 38 . . . . 4326 . . . . . . 10 . . . . . . . . 4327 . . . . . . . . . . . . . . . 4328 . . . . . . . . . 2 . . . . . 4329 . . . . . . . . . 0 . . . . . 4330 . . . 7 . . . . . . . . . . . 4331 . . . . . . . . . . . . 23 . . 4332 . . . . . . . . . 2 6 . . . . 4333 . . . . . . . . . . . . . . . 4334 . . . . . . . . . . . . . . . 4335 13 41 295 5 124 4335 9 104 2674 3 3 4335 4 28 860
W pionie pokazane są przy losowaniach ilość odstepów od trafienia do trafienia. Widać że można liczyć na trafienia 6 stref w sekcjach średnio co mniej więcej 16 losowań, czyli nie za bogato :-(.
Poniżej jest pseudowykres (histogramu odstepów). Jak go czytać ?. Pierwsza kolumna to odstepy, zero oznacza odstęp zerowy a wiec trafienie po trafieniu. Takich tarfień dla strefy 1 było w historii losowań 11. Z jednym odstepem było 13, z odstepem 2 -> 11 itd. Linijka ze znakiem "=" to pseudowykres, jej długość to ilość trafień danego odstepu. Widać wyraznie krzywą dzwonową (rozkładu Gaussa z trafień), wyraznie opada po granicy 20 tu odstepów. Mówi to ze jeżeli ostatni odstep przekroczy 20 to jest duża szansa na trafienie w najbliższym losowaniu :-).
<--------------- statystyki --------------> ------------------------------- Strefa numer : 1 Limit trafień : 6 ------------------------------- Ilość trafień : 263 Średnia trafień : 16.5 ------------------------------- Histogram trafień 100 odstępów ods hit histogram .... ------------------------------- 0 11 =========== 1 13 ============= 2 15 =============== 3 11 =========== 4 17 ================= 5 14 ============== 6 7 ======= 7 8 ======== 8 6 ====== 9 6 ====== 10 11 =========== 11 14 ============== 12 6 ====== 13 5 ===== 14 10 ========== 15 8 ======== 16 9 ========= 17 7 ======= 18 9 ========= 19 4 ==== 20 8 ======== 21 1 = 22 6 ====== 23 3 === 24 3 === 25 2 == 26 2 == 27 7 ======= 28 2 == 29 3 === 30 2 == 31 1 = 32 1 = 33 1 = 34 2 == 35 2 == 36 2 == 37 2 == 38 0