Option Explicit
' script BetaTest 0.1
'Verificare la veridicità delle statistiche
' segnalare eventuali bugs, potrebbero essercene molti
' chiedere varie implementazioni
' non conoscendo il gioco non so quali opzioni di ricerca attivare
' se avete suggerimenti e sono fattibili ;)
Sub Main
Dim sFileArchivio
Dim Inizio,Fine
Dim IdAlg
sFileArchivio = GetDirectoryAppData & "Archivio LottoUK\Lotto UK 49's.txt"
If ApriBaseDatiFT(sFileArchivio,07,",",49) Then
Inizio = GetIdEstrazioneInizio
Fine = GetIdEstrazioneFine
Call GetTabEstrazioni(Fine)
IdAlg = GetAlgoritmo
Select Case IdAlg
Case 0
GetTesto
Call AlgoritmoRipetizionePosiazioneAcolpo(Inizio,Fine,IdAlg)
Case 1
GetTesto
Call AlgoritmoRipetizioneCoppiaAcolpo(Inizio,Fine,IdAlg)
Case 2
GetTesto1
Call AlgoritmoRipetizioneSommativoPosiazioneAcolpo(Inizio,Fine,IdAlg)
Case 3
GetTesto1
Call AlgoritmoRipetizioneSommativo2EstrPosiazioneAcolpo(Inizio,Fine,IdAlg)
Case 4
Call CalcolaStatistica(Inizio,Fine,IdAlg)
End Select
End If
End Sub
Sub GetTesto
Dim aTitoli
aTitoli = Array("","POSIZIONE","RITARDO","RITARDOMAX","SCARTO_R","INCR.RITMAX","FREQ","NUMERO")
Call InitTabella(aTitoli)
End Sub
Sub GetTesto1
Dim aTitoli
aTitoli = Array("","POSIZIONE","ADAT","RITARDO","RITARDOMAX","SCARTO_R","INCR.RITMAX","FREQ","NUMERO")
Call InitTabella(aTitoli)
End Sub
Function GetAlgoritmo
Dim aTitolo
aTitolo = Array("Rip di 1 dei 7 Estratti a Colpo","Rip di 1Coppia Per Estratti a Colpo","Rip di Estr+***at a Colpo","Rip di Coppia+***at a Colpo","TabellaStatisticaFormazione")
GetAlgoritmo = ScegliOpzioneMenu(aTitolo,0,"Seleziona Tipo Analisi")
End Function
Function scriviAlgoritmo(idAlg)
Dim aTitolo
aTitolo = Array("Rip di 1 dei 7 Estratti a Colpo","Rip di 1Coppia Per Estratti a Colpo","Rip di Estr+***at a Colpo","Rip di Coppia+***at a Colpo","TabellaStatisticaFormazione")
scriviAlgoritmo = aTitolo(idAlg)
End Function
Function GetIdEstrazioneInizio
ReDim aEstr(EstrazioniArchivioFT)
Dim qEstr
Dim i
For i = 1 To UBound(aEstr)
aEstr(i) = i
Next
qEstr = EstrazioniArchivioFT - 500
GetIdEstrazioneInizio = ScegliOpzioneMenu(aEstr,qEstr,"Estrazioni: " & EstrazioniArchivioFT & " Caricate : " & 500)
End Function
Function GetIdEstrazioneFine
ReDim aEstr(EstrazioniArchivioFT)
Dim i
For i = 1 To UBound(aEstr)
aEstr(i) = i
Next
GetIdEstrazioneFine = ScegliOpzioneMenu(aEstr,EstrazioniArchivioFT,"Estrazione Fine Statistica")
End Function
Function GetPosizioneVerifica
Dim aTitolo
aTitolo = Array("P1","P2","P3","P4","P5","P6","P7","Tutte Le Pos")
GetPosizioneVerifica = ScegliOpzioneMenu(aTitolo,0,"ScegliPosizioneDiVerifica") + 1
End Function
Function ScriviPosizioneVerifica(tipoAlgoritmo)
Dim aTitolo
aTitolo = Array("P1","P2","P3","P4","P5","P6","P7","Tutte Le Pos")
ScriviPosizioneVerifica = aTitolo(tipoAlgoritmo - 1)
End Function
Function GetSorte
Dim aV
aV = Array("Estratto","Ambo")
GetSorte = ScegliOpzioneMenu(aV,0,"SelezionaSorte") + 1
End Function
Function getIntestazione(Inizio,fine,sorte,IdAlg,PosInEsame)
Scrivi "Il Gioco è vietato ai minori di anni 18,e,può comportare gravissima dipendenza patologica"
Scrivi "Giocare solo se è legale,e,dove è Legale"
Scrivi "Lo script non restituisce previsioni ma solo dati statistici"
Scrivi
Scrivi FormatSpace("Ricerca Statistica ",60),True,,RGB(254,236,107),vbBlue
Scrivi "Inizio Ricerca : " & GetInfoEstrazioneFT(Inizio)
Scrivi "Fine Ricerca : " & GetInfoEstrazioneFT(fine)
Scrivi "Calcolo su : " & fine - Inizio & " Estrazioni"
Scrivi "Algoritmo Analizzato : " & scriviAlgoritmo(IdAlg)
Scrivi "Sorte Esaminata : " & NomeSorte(sorte)
If IdAlg < 4 Then
Scrivi "Posizioni Esaminate : " & ScriviPosizioneVerifica(PosInEsame)
End If
End Function
Function Freq2EstrattiInPos(E1,E2,idEstr,tipoalgoritmo,sorte)
Dim aNum(2)
If sorte = 1 Then
Select Case tipoalgoritmo
Case 1,2,3,4,5,6,7
If PosizioneFT(idEstr,E1) = tipoalgoritmo Or PosizioneFT(idEstr,E2) = tipoalgoritmo Then
Freq2EstrattiInPos = True
Else
Freq2EstrattiInPos = False
End If
Case 8
If PosizioneFT(idEstr,E1) > 0 Or PosizioneFT(idEstr,E2) > 0 Then
Freq2EstrattiInPos = True
Else
Freq2EstrattiInPos = False
End If
End Select
ElseIf sorte = 2 Then
aNum(1) = E1
aNum(2) = E2
If SerieFreqFT(idEstr,idEstr ,aNum,sorte) > 0 Then
Freq2EstrattiInPos = True
Else
Freq2EstrattiInPos = False
End If
End If
End Function
Function PresenzaEstrattiInPos(E1,idEstr,tipoalgoritmo)
Select Case tipoalgoritmo
Case 1,2,3,4,5,6,7
If PosizioneFT(idEstr,E1) = tipoalgoritmo Then
PresenzaEstrattiInPos = True
Else
PresenzaEstrattiInPos = False
End If
Case 8
If PosizioneFT(idEstr,E1) > 0 Then
PresenzaEstrattiInPos = True
Else
PresenzaEstrattiInPos = False
End If
End Select
End Function
Sub AlgoritmoRipetizionePosiazioneAcolpo(Inizio,Fine,idalg)
Dim idEstr,nTotEstr
Dim pos,E,iAdattatore,sPos
Dim Freq,Rit,RitMax,Incr
Dim nAlg,idSviluppo
Dim uE,uNum,k,i
Dim sIncr,ScartoRit
Dim TipoAlgoritmo
Dim T1,T2
ReDim aRit(0)
ReDim aIncr(0)
nTotEstr = Fine - Inizio
nAlg = 7*((Fine - 1) - Inizio)
TipoAlgoritmo = GetPosizioneVerifica
T1 = Timer
idSviluppo = 0
For pos = 1 To 7
' azzero le variabili per ogni estratto
Rit = 0
RitMax = 0
Freq = 0
Incr = 0
k = 0
' ciclo sino alla penultima estrazione per valorizzare l ultimo ritardo a colpo
For idEstr = Inizio To Fine - 1
idSviluppo = idSviluppo + 1
If idEstr Mod Round((nTotEstr/2),0) = 0 Then
Call Messaggio("StoElaborando: " & nTotEstr & " Estr.[Alg( pos: " & pos & ")]")
Call AvanzamentoElab(1,nAlg,idSviluppo)
End If
If ScriptInterrotto Then Exit For
E = EstrattoFT(idEstr,pos)
If PresenzaEstrattiInPos(E,idEstr + 1,TipoAlgoritmo) Then
Rit = 0
Incr = 0
Freq = Freq + 1
Else
Rit = Rit + 1
If Rit > RitMax Then
RitMax = Rit
Incr = Incr + 1
End If
End If
Next
uNum = EstrattoFT(Fine,pos)
ScartoRit = RitMax - Rit
sPos = "(" & pos & ")"
If ScriptInterrotto Then Exit For
Dim aTab
Call GetTabellaLineare(aTab,sPos,Rit,RitMax,ScartoRit,Incr,Freq,uNum)
Call ***RigaTabella(aTab)
'Scrivi sIncr
'Next
Next
T2 = Timer
Call getIntestazione(Inizio,Fine,1,idalg,TipoAlgoritmo)
Call CreaTabellaOrdinabile
End Sub
Sub AlgoritmoRipetizioneCoppiaAcolpo(Inizio,Fine,idalg)
Dim idEstr,nTotEstr
Dim pos,Pos1,E,iAdattatore,sPos
Dim Freq,Rit,RitMax,Incr
Dim nAlg,idSviluppo
Dim uE,uNum,k,i,sorte
Dim sIncr,ScartoRit
Dim TipoAlgoritmo,sNum
Dim E1,E2
Dim T1,T2
ReDim aRit(0)
ReDim aIncr(0)
'ReDim aNum(2)
nTotEstr = Fine - Inizio
nAlg = 21*((Fine - 1) - Inizio)
sorte = GetSorte
If sorte = 1 Then
TipoAlgoritmo = GetPosizioneVerifica
ElseIf sorte = 2 Then
TipoAlgoritmo = 8
End If
T1 = Timer
idSviluppo = 0
For pos = 1 To 6
For Pos1 = pos + 1 To 7
' azzero le variabili per ogni estratto
Rit = 0
RitMax = 0
Freq = 0
Incr = 0
k = 0
' ciclo sino alla penultima estrazione per valorizzare l ultimo ritardo a colpo
For idEstr = Inizio To Fine - 1
idSviluppo = idSviluppo + 1
If idEstr Mod Round((nTotEstr/2),0) = 0 Then
Call Messaggio("StoElaborando: " & nTotEstr & " Estr.[Alg( pos: " & pos & ")]")
Call AvanzamentoElab(1,nAlg,idSviluppo)
End If
If ScriptInterrotto Then Exit For
E1 = EstrattoFT(idEstr,pos)
E2 = EstrattoFT(idEstr,Pos1)
If Freq2EstrattiInPos(E1,E2,idEstr + 1,TipoAlgoritmo,sorte) Then
Rit = 0
Incr = 0
Freq = Freq + 1
Else
Rit = Rit + 1
If Rit > RitMax Then
RitMax = Rit
Incr = Incr + 1
End If
End If
Next
E1 = EstrattoFT(Fine,pos)
E2 = EstrattoFT(Fine,Pos1)
sNum = Format2(E1) & "." & Format2(E2)
ScartoRit = RitMax - Rit
If ScriptInterrotto Then Exit For
Dim aTab
sPos = "(" & pos & "," & Pos1 & ")"
Call GetTabellaLineare(aTab,sPos,Rit,RitMax,ScartoRit,Incr,Freq,sNum)
Call ***RigaTabella(aTab)
'Scrivi sIncr
'Next
Next
Next
T2 = Timer
Call getIntestazione(Inizio,Fine,sorte,idalg,TipoAlgoritmo)
Call CreaTabellaOrdinabile
End Sub
Sub GetTabellaLineare(aTab,pos,Rit,RitMax,Scarto,Incr,Freq,sNum)
aTab = Array("","P_" & pos,Rit,RitMax,Scarto,Incr,Freq,sNum)
End Sub
Sub AlgoritmoRipetizioneSommativoPosiazioneAcolpo(Inizio,Fine,idalg)
Dim idEstr,nTotEstr
Dim pos,E,iAdattatore,sPos
Dim Freq,Rit,RitMax,Incr
Dim nAlg,idSviluppo
Dim uE,uNum,k,i,Som
Dim sIncr,ScartoRit
Dim TipoAlgoritmo
Dim T1,T2
ReDim aRit(0)
ReDim aIncr(0)
nTotEstr = Fine - Inizio
nAlg = 49*7*nTotEstr
TipoAlgoritmo = GetPosizioneVerifica
T1 = Timer
idSviluppo = 0
For Som = 1 To 49
For pos = 1 To 7
' azzero le variabili per ogni estratto
Rit = 0
RitMax = 0
Freq = 0
Incr = 0
k = 0
' ciclo sino alla penultima estrazione per valorizzare l ultimo ritardo a colpo
For idEstr = Inizio To Fine - 1
idSviluppo = idSviluppo + 1
If idEstr Mod Round((nTotEstr/2),0) = 0 Then
Call Messaggio("StoElaborando: " & nTotEstr & " Estr.[Alg( pos: " & pos & "+Adat:&" & Som & ")]")
Call AvanzamentoElab(1,nAlg,idSviluppo)
End If
If ScriptInterrotto Then Exit For
E = Fuori49(EstrattoFT(idEstr,pos) + Som)
If PresenzaEstrattiInPos(E,idEstr + 1,TipoAlgoritmo) Then
Rit = 0
Incr = 0
Freq = Freq + 1
Else
Rit = Rit + 1
If Rit > RitMax Then
RitMax = Rit
Incr = Incr + 1
End If
End If
Next
uNum = Fuori49(EstrattoFT(Fine,pos) + Som)
ScartoRit = RitMax - Rit
sPos = "(" & pos & ")"
If ScriptInterrotto Then Exit For
Dim aTab
Call GetTabellaLineare1(aTab,sPos,Som,Rit,RitMax,ScartoRit,Incr,Freq,uNum)
Call ***RigaTabella(aTab)
'Scrivi sIncr
'Next
Next
Next
T2 = Timer
Call getIntestazione(Inizio,Fine,1,idalg,TipoAlgoritmo)
Call CreaTabellaOrdinabile
End Sub
Sub AlgoritmoRipetizioneSommativo2EstrPosiazioneAcolpo(Inizio,Fine,idalg)
Dim idEstr,nTotEstr
Dim pos,pos1,E,iAdattatore,sPos
Dim Freq,Rit,RitMax,Incr
Dim nAlg,idSviluppo
Dim uE,uNum,k,i,Som
Dim sIncr,ScartoRit
Dim TipoAlgoritmo
Dim T1,T2
ReDim aRit(0)
ReDim aIncr(0)
nTotEstr = Fine - Inizio
nAlg = 49*21*nTotEstr
TipoAlgoritmo = GetPosizioneVerifica
T1 = Timer
idSviluppo = 0
For Som = 1 To 49
For pos = 1 To 6
For pos1 = pos + 1 To 7
' azzero le variabili per ogni estratto
Rit = 0
RitMax = 0
Freq = 0
Incr = 0
k = 0
' ciclo sino alla penultima estrazione per valorizzare l ultimo ritardo a colpo
For idEstr = Inizio To Fine - 1
idSviluppo = idSviluppo + 1
If idEstr Mod Round((nTotEstr/2),0) = 0 Then
Call Messaggio("StoElaborando: " & nTotEstr & " Estr.[Alg( pos: " & pos & "+" & pos1 & "+Adat:&" & Som & ")]")
Call AvanzamentoElab(1,nAlg,idSviluppo)
End If
If ScriptInterrotto Then Exit For
E = Fuori49(EstrattoFT(idEstr,pos) + EstrattoFT(idEstr,pos1) + Som)
If PresenzaEstrattiInPos(E,idEstr + 1,TipoAlgoritmo) Then
Rit = 0
Incr = 0
Freq = Freq + 1
Else
Rit = Rit + 1
If Rit > RitMax Then
RitMax = Rit
Incr = Incr + 1
End If
End If
Next
uNum = Fuori49(EstrattoFT(Fine,pos) + EstrattoFT(Fine,pos1) + Som)
ScartoRit = RitMax - Rit
sPos = "(" & pos & "+" & pos1 & ")"
If ScriptInterrotto Then Exit For
Dim aTab
Call GetTabellaLineare1(aTab,sPos,Som,Rit,RitMax,ScartoRit,Incr,Freq,uNum)
Call ***RigaTabella(aTab)
'Scrivi sIncr
Next
Next
Next
T2 = Timer
Call getIntestazione(Inizio,Fine,1,idalg,TipoAlgoritmo)
Call CreaTabellaOrdinabile
End Sub
Sub CalcolaStatistica(Inizio,Fine,idAlg)
Dim nClasse,nColTot,idComb,sNum
Dim sorte,Rit,RitMax,Incr,Freq,scarto
Dim CicloT,i
Dim PosInEsame :PosInEsame = ""
ReDim aNum(49)
For i = 1 To UBound(aNum)
aNum(i) = i
Next
nClasse = Int(InputBox("Inserisci un numero tra 1 e 4 ","SelezionaClasseDiSviluppo",2))
Do While nClasse > 4
MsgBox"La Classe non puo essere superiore a 4",vbCritical,vbYes
nClasse = Int(InputBox("Inserisci un numero tra 1 e 4 ","SelezionaClasseDiSviluppo",2))
Loop
sorte = Int(InputBox("Inserisci un numero tra 1 e " & nClasse,"SelezionaSorteDiVerifica",nClasse - 1))
CicloT = CicloTeorico(nClasse,sorte,,7,49)
nColTot = InitSviluppoIntegrale(aNum,nClasse)
Dim aTitoli
aTitoli = Array("","sNum","Rit","RitMax","ScartoR","Incr","Freq")
Call InitTabella(aTitoli)
idComb = 0
Do While GetCombSviluppo(aNum)
sNum = StringaNumeri(aNum,".",True)
idComb = idComb + 1
Call Messaggio("Formazione : " & sNum)
Call AvanzamentoElab(1,nColTot,idComb)
Call StatisticaFormazioneFT(aNum,sorte,Rit,RitMax,Incr,Freq,Inizio,Fine)
scarto = RitMax - Rit
Dim aTab
aTab = Array("",sNum,Rit,RitMax,scarto,Incr,Freq)
' qui si puo scrivere qualsiasi filtro si voglia
If scarto <= 9 Then Call ***RigaTabella(aTab)
If ScriptInterrotto Then Exit Do
Loop
Call getIntestazione(Inizio,Fine,sorte,idAlg,PosInEsame)
Scrivi "CicloTeoricoComb : " & CicloT
Call CreaTabellaOrdinabile()
End Sub
Sub GetTabellaLineare1(aTab,pos,Som,Rit,RitMax,ScartoRit,Incr,Freq,uNum)
aTab = Array("","P_" & pos,"+" & Som,Rit,RitMax,ScartoRit,Incr,Freq,uNum)
End Sub
Sub GetTabEstrazioni(fine)
Dim idEstr,rit
Dim aTitoli
rit = 19
aTitoli = Array("","DATA_ESTRAZIONE","ESTRATTI","RIT")
Call InitTabella(aTitoli)
For idEstr =(fine - rit) + 1 To fine
rit = rit - 1
Dim aTab
aTab = Array("",GetInfoEstrazioneFT(idEstr),StringaEstrattiFT(idEstr),rit)
Call ***RigaTabella(aTab)
Next
Scrivi FormatSpace("Ultime 19 Estrazioni",42),True,,vbBlue,vbWhite
Call CreaTabella
End Sub