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