L
LuigiB
Guest
ciao a tutti , sapete che ogni tanto faccio qualche script per passatempo , ora era un po' che non ne facevo e cosi mi è venuto in mente questo che sto per postare.
Da non giocatore e inesperto del lotto è chiaro che il tipo di analisi che mi è venuta in mente è banale
, ho pensato chissa da quanto tempo ritarda il numero dato dalla somma del numero presente nella prima casella dell'estrazione precedente + il numero in quinta casella dell'estrazione corrente , e poi .. e perche no il numero in seconda posizione dell'estrazione precedente + il numero in prima posizione in quella corrente e cosi via .. insomma volevo analizzare tutte le possibili combinazioni di somme tra i numeri di un gruppo di quantita x di estrazioni a partire dalla corrente che è quella che genera il pronostico.
E cosi il seguente script fa questo.
ottiene i numeri da giocare sommando col fuori90 i numeri presenti in tutte le possibili combinazioni di caselle delle ultime X estrazionI ad ogni passaggio nel ciclo di analisi,
ad esempio se X vale 2 per ottenre il numero da giocare su quella ruota
sommera i numeri delle caselle delle ultime due estrazioni nell 25 posssibili combinazioni
se X valesse 3
sommera i numeri delle caselle delle ultime tre estrazioni nelle 125 posssibili combinazioni
e cosi via ..
Lo script infatti chiedera quante estrazioni devono essere considerate per fare la somma dei numeri nelle caselle
registrando i valori statistici e scegliendo per ogni ruota il numero dato dalla combinazione di caselle con il valore Ritardo/RitardoMax piu alto
crea una lista che mostra i valori calcolati e un grafioc della distribuzione del ritardo.
Non so se lo script serva a qualcosa io lanciandolo comabiando una decina di volte il range finale ho notato che qualche esito c'era sempre..
chiaro che si tratta di coincidenza mica è sempre festa
ecco lo script
Da non giocatore e inesperto del lotto è chiaro che il tipo di analisi che mi è venuta in mente è banale
, ho pensato chissa da quanto tempo ritarda il numero dato dalla somma del numero presente nella prima casella dell'estrazione precedente + il numero in quinta casella dell'estrazione corrente , e poi .. e perche no il numero in seconda posizione dell'estrazione precedente + il numero in prima posizione in quella corrente e cosi via .. insomma volevo analizzare tutte le possibili combinazioni di somme tra i numeri di un gruppo di quantita x di estrazioni a partire dalla corrente che è quella che genera il pronostico.
E cosi il seguente script fa questo.
ottiene i numeri da giocare sommando col fuori90 i numeri presenti in tutte le possibili combinazioni di caselle delle ultime X estrazionI ad ogni passaggio nel ciclo di analisi,
ad esempio se X vale 2 per ottenre il numero da giocare su quella ruota
sommera i numeri delle caselle delle ultime due estrazioni nell 25 posssibili combinazioni
se X valesse 3
sommera i numeri delle caselle delle ultime tre estrazioni nelle 125 posssibili combinazioni
e cosi via ..
Lo script infatti chiedera quante estrazioni devono essere considerate per fare la somma dei numeri nelle caselle
registrando i valori statistici e scegliendo per ogni ruota il numero dato dalla combinazione di caselle con il valore Ritardo/RitardoMax piu alto
crea una lista che mostra i valori calcolati e un grafioc della distribuzione del ritardo.
Non so se lo script serva a qualcosa io lanciandolo comabiando una decina di volte il range finale ho notato che qualche esito c'era sempre..
chiaro che si tratta di coincidenza mica è sempre festa

ecco lo script
Codice:
Option Explicit
Class Colonna
Private mColonna
Private mRitardo
Private mRitMax
Private mFrequenza
Private mClasse
Public Property Let Classe(v)
mClasse = v
End Property
Public Property Get Classe
Classe = mClasse
End Property
Public Property Let Frequenza(v)
mFrequenza = v
End Property
Public Property Get Frequenza
Frequenza = mFrequenza
End Property
Public Property Let RitMax(v)
mRitMax = v
End Property
Public Property Get RitMax
RitMax = mRitMax
End Property
Public Property Let Ritardo(v)
mRitardo = v
End Property
Public Property Get Ritardo
Ritardo = mRitardo
End Property
Public Property Let Colonna(v)
Dim k
mColonna = v
mClasse = UBound(mColonna)
End Property
Public Property Get Colonna
Colonna = mColonna
End Property
Function GetColonna(aCol)
aCol = mColonna
End Function
End Class
Class SvilColonna
Private mSegni
Private nClasse
Private aLenCas
Private aPosPunt
Private bNuovaColPres
Public Property Let Segni(v)
mSegni = v
Init
End Property
Public Property Get Segni
Segni = mSegni
End Property
Private Sub Init
Dim k
nClasse = UBound(mSegni)
ReDim aLenCas(nClasse)
ReDim aPosPunt(nClasse)
For k = 1 To nClasse
aLenCas(k) = Len(mSegni(k))
aPosPunt(k) = 1
Next
bNuovaColPres = True
End Sub
Function GetColonna(aRetCol)
Dim bRet
Dim k,j
ReDim aRetCol(nClasse)
If bNuovaColPres Then
bNuovaColPres = False
For k = 1 To nClasse
aRetCol(k) = Int(Mid(mSegni(k),aPosPunt(k),1))
Next
For k = nClasse To 1 Step - 1
If aPosPunt(k) + 1 <= aLenCas(k) Then
aPosPunt(k) = aPosPunt(k) + 1
For j = k + 1 To nClasse
aPosPunt(j) = 1
Next
bNuovaColPres = True
Exit For
End If
Next
GetColonna = True
End If
End Function
End Class
Sub Main
Dim CollColonne
Dim k
Dim clsCol
Dim nNumInGioco
Dim nRuota
Dim aTitoli(9),aValori(9)
Dim nRapp,nRappMax,idClasse
Dim nDaFare,nFatte
Dim nGiocata
Dim nClasse
Dim aCol
nClasse = Int(InputBox("Inserire classe colonna","Classe",2))
If nClasse <= 1 Then Exit Sub
Set CollColonne = GetNewCollection
Call AlimentaCollColonne(CollColonne,nClasse)
aTitoli(1) = "PosDaSommare"
aTitoli(2) = "Ruota"
aTitoli(3) = "Ritardo"
aTitoli(4) = "RitardoMax"
aTitoli(5) = "Frequenza"
aTitoli(6) = "Rit/RitMax"
aTitoli(7) = "NumInGioco"
aTitoli(8) = "Esito"
aTitoli(9) = "ColpiPerEsito"
Call InitTabella(aTitoli)
nDaFare =(CollColonne.count * 10) *(EstrazioneFin -(EstrazioneIni - 1))
nFatte = 0
nGiocata = 0
ReDim aUsciteAlRit(300)
For nRuota = 1 To 10
For k = EstrazioneIni To EstrazioneFin - 1
ReDim aSegnalazioniN(90)
For Each clsCol In CollColonne
nNumInGioco = GetNumInGioco(clsCol,k,nRuota)
If VerificaEsitoPrev(nNumInGioco,k + 1,nRuota) Then
clsCol.Frequenza = clsCol.Frequenza + 1
If clsCol.Ritardo > clsCol.RitMax Then
clsCol.RitMax = clsCol.Ritardo
End If
aUsciteAlRit(clsCol.Ritardo) = aUsciteAlRit(clsCol.Ritardo) + 1
clsCol.Ritardo = 0
Else
clsCol.Ritardo = clsCol.Ritardo + 1
End If
nFatte = nFatte + 1
If nFatte Mod 10 = 0 Then
Call AvanzamentoElab(1,nDaFare,nFatte)
If ScriptInterrotto Then Exit Sub
End If
Next
Next
k = 0
nRappMax = 0
idClasse = 1
For Each clsCol In CollColonne
k = k + 1
nRapp = Dividi(clsCol.Ritardo,clsCol.RitMax)
If CDbl(nRapp) > CDbl(nRappMax) Then
nRappMax = nRapp
idClasse = k
End If
Next
Set clsCol = CollColonne(idClasse)
Call clsCol.GetColonna(aCol)
aValori(1) = StringaNumeri(aCol) 'idClasse
aValori(2) = NomeRuota(nRuota)
aValori(3) = clsCol.Ritardo
aValori(4) = clsCol.RitMax
aValori(5) = clsCol.Frequenza
aValori(6) = Dividi(clsCol.Ritardo,clsCol.RitMax)
aValori(7) = GetNumInGioco(clsCol,EstrazioneFin,nRuota)
If VerificaEsitoPrev(aValori(7),EstrazioneFin + 1,nRuota) Then
aValori(8) = "Si"
Else
aValori(8) = "-"
End If
aValori(9) = GetColpiPerEsito(clsCol,EstrazioneFin,nRuota)
Call AddRigaTabella(aValori)
'
'
Next
Call CreaTabella(6)
Call DisegnaGraf(aUsciteAlRit,0,50,500)
Call DisegnaGraf(aUsciteAlRit,51,100,25)
Call DisegnaGraf(aUsciteAlRit,101,150,2)
Call DisegnaGraf(aUsciteAlRit,151,300,1)
End Sub
Function GetColpiPerEsito(clsCol,IdEstr,nRuota)
Dim bTrov
Dim nNumInG
Dim IdEstrTmp
Dim nColpi
Dim nMax
nMax = EstrazioneFin
IdEstrTmp = IdEstr
bTrov = False
nColpi = 0
Do While bTrov = False
nNumInG = GetNumInGioco(clsCol,IdEstrTmp,nRuota)
If VerificaEsitoPrev(nNumInG,IdEstrTmp + 1,nRuota) Then
bTrov = True
Exit Do
End If
nColpi = nColpi + 1
IdEstrTmp = IdEstrTmp + 1
If IdEstrTmp > nMax Then Exit Do
Loop
If bTrov Then
GetColpiPerEsito = nColpi
Else
GetColpiPerEsito = "-"
End If
End Function
Sub DisegnaGraf(aUsciteAlRit,nIni,nFin,nStepY)
Dim k
Dim nElementi
Dim nValoreMaxY
Dim i
nElementi =(nFin - nIni)'+1
ReDim aValoriGraf(nElementi,2)
i = 0
For k = nIni To nFin
aValoriGraf(i,1) = k
aValoriGraf(i,2) = Int(aUsciteAlRit(k))
If aUsciteAlRit(k) > nValoreMaxY Then
nValoreMaxY = aUsciteAlRit(k)
End If
i = i + 1
Next
Call PreparaGrafico("Analisi",nIni,nFin,0,nValoreMaxY,10,nStepY)
Call DisegnaLineaGrafico(aValoriGraf,vbRed,"PresAlRit")
Call InserisciGrafico
End Sub
Function VerificaEsitoPrev(nNumInGioco,idEstr,ruota)
If Posizione(idEstr,ruota,nNumInGioco) > 0 Then
VerificaEsitoPrev = True
Else
VerificaEsitoPrev = False
End If
End Function
Function GetNumInGioco(clsCol,nIdEstr,Ruota)
Dim k,i
Dim nIni
Dim nRet
Dim aCol
Call clsCol.GetColonna(aCol)
nIni = nIdEstr -(clsCol.Classe - 1)
If nIni > 0 Then
i = 0
nRet = 0
For k = nIni To nIdEstr
i = i + 1
nRet = nRet + Int(Estratto(k,Ruota,aCol(i)))
Next
GetNumInGioco = Fuori90(nRet)
Else
GetNumInGioco = 0
End If
End Function
Sub AlimentaCollColonne(CollColonne,nClasse)
Dim cSvil
Dim nCol
Dim clsCol
Dim k
ReDim aSegni(nClasse)
For k = 1 To UBound(aSegni)
aSegni(k) = "12345"
Next
Set cSvil = New SvilColonna
cSvil.segni = aSegni
ReDim aCol(0)
Do While cSvil.GetColonna(aCol)
nCol = nCol + 1
' solo per testare le colonne prodotte
'Call Scrivi (FormattaStringa( nCol,"00000" ) & ") " & StringaNumeri ( aCol ))
Set clsCol = New Colonna
clsCol.Colonna = aCol
CollColonne.Add clsCol
Loop
End Sub