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
	
			
			