Novità

Si potrebbe realizzare uno script Tabbellare come di seguito ? atto terzo

i legend

Premium Member
scusate ho dovuto cancellare il post precedente perchè non riuscivo a scrivere il codice ,che era solo fonte di confusione.
chiedoscusa a luigi per aver cancellato il suo divertente messaggio, mi ha fatto piacere rileggerti.Appena la connessione me lo permette posto lo script....
grazie a tutti e chiedo scusa ancora una volta.
buona notte a tutti.
 
Buona serata a tutti:-)

il codice è da testare, verificando gli estratti ho riscontrato delle divergenze con altri programmi
Spero si capisca , ho eliminato la parte remmata, se è corretto e pensate possa tornare utile aggiungo altre 2 colonne statistiche
Ho appena finito di ritoccarlo e vista l'ora potrebbe essermi sfuggito qualcosa.....
Inserite pochi numeri , altrimenti rallenta troppo :-)
Fatemi sapere, spero di aver fatto dei progressi:-)
Buona Notte:-)
Codice:
Option Explicit
Sub Main
    Dim Ini,Fin,nEstr,es,nMese,k,x,r,Z,nValore,idOrd,TipOrd,aRetRitardi,Ctr,DevStd,nEle
    Dim TUTTI,Gennaio,Febbraio,Marzo,Aprile,Maggio,Giugno,Luglio,Agosto,Settembre,Ottobre,Novembre,Dicembre
    Dim s,e,ritardo,ritardomax,IncrRitMax,Frequenza,freqTeorica,RitMed,FreqMese,freq,RitMese,Scarto
    Dim nNumeri,aColonne
    Dim aNumeri(90)
    Dim aRu(1)
    Dim nCombinazione,nSorte,nCiclo
    ReDim aRit(0)
    ReDim aRetIdEstr(0)
    Ini = InizioArchivio
        Fin = EstrazioneFin
    'nEstr = Fin - Ini
    Call ScegliNumeri(nNumeri)
    nCombinazione = ScegliCombinazione
    nSorte = CInt(SelEsito)
    r = SelRuota     '
    aRu(1) = r
    If r = 11 Then Ctr = 10: Else Ctr = 1
    idOrd = Ordinamento
    TipOrd = TipoOrdinamento
    
    ReDim aTitolo(21)
    aTitolo(1) = "ID"
    aTitolo(2) = "Comb."
    aTitolo(3) = "Freq"
    aTitolo(4) = "Scarto"
    aTitolo(5) = "Rit"
    aTitolo(6) = "RitMed"
    aTitolo(7) = "RitSto"
    aTitolo(8) = "IncR.S"
    aTitolo(9) = "DevStd"
    aTitolo(10) = "GEN"
    aTitolo(11) = "FEB"
    aTitolo(12) = "MAR"
    aTitolo(13) = "APR"
    aTitolo(14) = "MAG"
    aTitolo(15) = "GIU"
    aTitolo(16) = "LUG"
    aTitolo(17) = "AGO"
    aTitolo(18) = "SET"
    aTitolo(19) = "OTT"
    aTitolo(20) = "NOV"
    aTitolo(21) = "DIC"
    
    InitTabella aTitolo,RGB(121,200,246),,3,RGB(255,255,255),"Consolas"
    nEstr=contaEstrazioni(Ini,Fin,r)
    nValore = Round(CicloTeorico(nCombinazione,nSorte,CInt(Ctr)),2)
    freqTeorica = Round(Dividi(nEstr,nValore),2)
    aColonne = SviluppoIntegrale(nNumeri,nCombinazione)
    nEle = 0
    For k = 1 To UBound(aColonne)
            s = ""
        For e = 1 To nCombinazione
            s = s & Format2(aColonne(k,e)) & "."
            aNumeri(e) = aColonne(k,e)
            Call StatisticaFormazioneTurbo(aNumeri,aRu,nSorte,ritardo,ritardomax,IncrRitMax,Frequenza,Ini,Fin)
        
            TUTTI = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,"TUTTI")
            ' se per ottenere la frequenza mese con il ciclo sottostante sballano i calcoli .Perchè?
            'ReDim idM(12)
            'For Z= 1 To 12
            
            'idM(Z)=TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,Z)
            'Next

            Gennaio = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,1)
            Febbraio = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,2)
            Marzo = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,3)
            Aprile = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,4)
            Maggio = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,5)
            Giugno = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,6)
            Luglio = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,7)
            Agosto = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,8)
            Settembre = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,9)
            Ottobre = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,10)
            Novembre = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,11)
            Dicembre = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,12)
            
            RitMese = TrovaRitardoMese(aNumeri,aRu,nSorte,Ini,Fin,"TUTTI")
            Scarto = Round(TUTTI - freqTeorica,2)
        
            Call ElencoRitardiTurbo(aNumeri,aRu,nSorte,Ini,Fin,aRetRitardi,aRetIdEstr)
    
            RitMed = RitardoMedio(aRetRitardi)
    
            
            DevStd = CalcolaDeviazioneStd(aRetRitardi)
            
        Next
        s = Left(s,Len(s) - 1)
        
        ReDim aRisultato(21)
        aRisultato(1) = k
        aRisultato(2) = s
        aRisultato(3) = TUTTI
        aRisultato(4) = Scarto
        aRisultato(5) = RitMese
        aRisultato(6) = RitMed
        aRisultato(7) = ritardomax
        aRisultato(8) = IncrRitMax
        aRisultato(9) = DevStd
        aRisultato(10) = Gennaio
        aRisultato(11) = Febbraio
        aRisultato(12) = Marzo'
        aRisultato(13) = Aprile
        aRisultato(14) = Maggio
        aRisultato(15) = Giugno
        aRisultato(16) = Luglio
        aRisultato(17) = Agosto
        aRisultato(18) = Settembre
        aRisultato(19) = Ottobre
        aRisultato(20) = Novembre
        aRisultato(21) = Dicembre
        Call AddRigaTabella(aRisultato,,,3,RGB(0,0,0),"Consolas")
    
        Call SetColoreCella(CInt(idOrd),RGB(221,255,230),2)
        Call SetColoreCella(Mese(EstrazioneFin) + 9,RGB(215,215,255),2)
    Next
    Scrivi "Tabella Statistica per formazioni libere" & " ",1,,RGB(252,227,143),,5
    Scrivi
    Scrivi "Range Ricerca Estrazioni dal :{" & DataEstrazione(Ini) & " } al : {" & DataEstrazione(Fin) & "}",1,,,,3
    Scrivi "Estrazioni Totali Analizzati :{" & nEstr & "}",1,,,,3
    Scrivi "Numeri di ricerca =          :{" & StringaNumeri(nNumeri) & "}",1,,,,3
    Scrivi "Sviluppo numeri in           :{" & k - 1 & " " & NomeCombinazione(nCombinazione) & "}",1,,,,3
    Scrivi "Analesi combinazione per     :{" & NomeSorte(nSorte) & "}",1,,,,3
    Scrivi "Ciclo Teorico                :{" & nValore & "}",1,,,,3
    Scrivi "Frequenza Teorica            :{" & freqTeorica & "}",1,,,,3
    Scrivi "Ruota di ricerca             :{" & NomeRuota(aRu(1)) & "}",1,,,,3
    Scrivi "Ordinamento colonna num      :{" & aTitolo(idOrd) & "}",1,,,,3
    Scrivi "Ordino Colonna in modo       :{" & TipOrd & "}",1,,,,3
    Scrivi
    Call SetTableWidth("100%")
    Call CreaTabella
End Sub



Function TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,fin,nMese)
    Dim k
    Dim FreqMese
    For k = Ini To fin
        If Mese(k) = nMese Then
            Call ImpostaEstrazione(k,True)
        Else
            Call ImpostaEstrazione(k,False)
        End If
    Next
    For k = Ini To fin
        If nMese = "TUTTI" Then Call ImpostaEstrazione(k,True)
    Next
    FreqMese = SerieFreqTurbo(Ini,fin,aNumeri,aRu,nSorte)
    TrovaFrequenzaMese = FreqMese
End Function
Function TrovaRitardoMese(aNumeri,aRu,nSorte,Ini,fin,nMese)
    Dim k
    Dim RitMese
    For k = Ini To fin
        If Mese(k) = nMese Then
            Call ImpostaEstrazione(k,True)
        Else
            Call ImpostaEstrazione(k,False)
        End If
    Next
    For k = Ini To fin
        If nMese = "TUTTI" Then Call ImpostaEstrazione(k,True)
    Next
    RitMese = SerieRitardoTurbo(Ini,fin,aNumeri,aRu,nSorte)
    TrovaRitardoMese = RitMese
End Function
Function NomeCombinazione(a)
    Dim ris
    Select Case a
    Case 1
        ris = "Estratti"
    Case 2
        ris = "Ambi"
    Case 3
        ris = "Terzine"
    Case 4
        ris = "Quartine"
    Case 5
        ris = "Cinquine"
    End Select
    NomeCombinazione = ris
End Function
Function Ordinamento
    Dim Ord
    ReDim aTitolo(19)
    aTitolo(1) = "Freq"
    aTitolo(2) = "Scarto"
    aTitolo(3) = "Rit"
    aTitolo(4) = "RitMed"
    aTitolo(5) = "RitSto"
    aTitolo(6) = "IncR.S"
    aTitolo(7) = "DevStd"
    aTitolo(8) = "GEN"
    aTitolo(9) = "FEB"
    aTitolo(10) = "MAR"
    aTitolo(11) = "APR"
    aTitolo(12) = "MAG"
    aTitolo(13) = "GIU"
    aTitolo(14) = "LUG"
    aTitolo(15) = "AGO"
    aTitolo(16) = "SET"
    aTitolo(17) = "OTT"
    aTitolo(18) = "NOV"
    aTitolo(19) = "DIC"
    Ord = ScegliOpzioneMenu(aTitolo,0,"Seleziona Ordinamento  per la colonna :") + 2
    Ordinamento = Ord
End Function
Function TipoOrdinamento
    Dim Ord
    ReDim atitolo(1)
    atitolo(0) = "Ascendente"
    atitolo(1) = "Discendente"
    Ord = ScegliOpzioneMenu(atitolo,0,"Seleziona Tipo Ordinamento  :")
    If Ord = 0 Then Ord = - 1 : Else Ord = 1
    TipoOrdinamento = Ord
End Function
Function ScegliCombinazione
    Dim combinazione
    ReDim aVoci(5)
    aVoci(1) = "Estratti"
    aVoci(2) = "Ambi"
    aVoci(3) = "Terzine"
    aVoci(4) = "Quartine"
    aVoci(5) = "Cinquine"
    combinazione = ScegliOpzioneMenu(aVoci,1," Combina i numeri In :")
    ScegliCombinazione = CInt(combinazione)
End Function
Function SelEsito
    Dim Esito
    ReDim aVoci(5)
    aVoci(1) = "Estratto"
    aVoci(2) = "Ambo"
    aVoci(3) = "Terno"
    aVoci(4) = "Quaterna"
    aVoci(5) = "Cinquina"
    Esito = ScegliOpzioneMenu(aVoci,1," Analesi per Sorte di : ")
    SelEsito = CInt(Esito)
End Function
Function SelRuota
    Dim Ruota
    ReDim aVoci(12)
    aVoci(1) = "BARI"
    aVoci(2) = "CAGLIARI"
    aVoci(3) = "FIRENZE"
    aVoci(4) = "GENOVA"
    aVoci(5) = "MILANO"
    aVoci(6) = "NAPOLI"
    aVoci(7) = "PALERMO"
    aVoci(8) = "ROMA"
    aVoci(9) = "TORINO"
    aVoci(10) = "VENEZIA"
    aVoci(11) = "TUTTE"
    aVoci(12) = "NAZIONALE"
    Ruota = ScegliOpzioneMenu(aVoci,1," Analizza Ruota di : ")
    SelRuota = CInt(Ruota)
End Function
Function SelMese
    Dim Ruota
    ReDim aVoci(12)
    aVoci(1) = "GENNAIO"
    aVoci(2) = "FEBRAIO"
    aVoci(3) = "MARZO"
    aVoci(4) = "APRILE"
    aVoci(5) = "MAGGIO"
    aVoci(6) = "GIUGNO"
    aVoci(7) = "LUGLIO"
    aVoci(8) = "AGOSTO"
    aVoci(9) = "SETTEMBRE"
    aVoci(10) = "OTTOBRE"
    aVoci(11) = "NOVEMBRE"
    aVoci(12) = "DICEMBRE"
    Ruota = ScegliOpzioneMenu(aVoci,1," Analizza Mese di : ")
    SelMese = CInt(Ruota)
End Function
Function InizioArchivio
    Dim es,Inizio
    ReDim aVoci(EstrazioneFin)
    For es = 1 To EstrazioneFin
        aVoci(es) = DataEstrazione(es)
    Next
    Inizio = ScegliOpzioneMenu(aVoci,1,"Inserisci Data Inizio Analisi")
    InizioArchivio = Inizio
End Function
Function RitardoMedio(aRitardi())
    Dim k
    Dim nElementi
    Dim nMedia
    For k = 1 To UBound(aRitardi) - 1
        nElementi = nElementi + 1
        nMedia = nMedia + aRitardi(k)
    Next
    nMedia = Round(Dividi(nMedia,nElementi),2)
    RitardoMedio = nMedia
End Function
Function CalcolaDeviazioneStd(aRitardi())
    Dim k
    Dim somRit,nMedia,nElementi,nVarianza,nSomSQVar
    For k = 1 To UBound(aRitardi) - 1
        nElementi = nElementi + 1
        somRit = somRit + aRitardi(k)
    Next
    nMedia = Round(Dividi(somRit,nElementi))
    For k = 1 To UBound(aRitardi) - 1
        nSomSQVar = nSomSQVar +((nMedia - aRitardi(k)) ^ 2)
        nVarianza = Round(Dividi(nSomSQVar,nElementi),2)
    Next
    CalcolaDeviazioneStd = Round(Sqr(nVarianza),2)
End Function
 Function contaEstrazioni(Ini,fin,r)
    Dim conta ,es
        
    For es= Ini To fin
    If Posizione(es,r,0)=False Then conta=conta+1
    
    
    Next
    
    contaEstrazioni= conta
End Function
 
Buona serata a tutti:-)

il codice è da testare, verificando gli estratti ho riscontrato delle divergenze con altri programmi
Spero si capisca , ho eliminato la parte remmata, se è corretto e pensate possa tornare utile aggiungo altre 2 colonne statistiche
Ho appena finito di ritoccarlo e vista l'ora potrebbe essermi sfuggito qualcosa.....
Inserite pochi numeri , altrimenti rallenta troppo :-)
Fatemi sapere, spero di aver fatto dei progressi:-)
Buona Notte:-)
Codice:
Option Explicit
Sub Main
    Dim Ini,Fin,nEstr,es,nMese,k,x,r,Z,nValore,idOrd,TipOrd,aRetRitardi,Ctr,DevStd,nEle
    Dim TUTTI,Gennaio,Febbraio,Marzo,Aprile,Maggio,Giugno,Luglio,Agosto,Settembre,Ottobre,Novembre,Dicembre
    Dim s,e,ritardo,ritardomax,IncrRitMax,Frequenza,freqTeorica,RitMed,FreqMese,freq,RitMese,Scarto
    Dim nNumeri,aColonne
    Dim aNumeri(90)
    Dim aRu(1)
    Dim nCombinazione,nSorte,nCiclo
    ReDim aRit(0)
    ReDim aRetIdEstr(0)
    Ini = InizioArchivio
        Fin = EstrazioneFin
    'nEstr = Fin - Ini
    Call ScegliNumeri(nNumeri)
    nCombinazione = ScegliCombinazione
    nSorte = CInt(SelEsito)
    r = SelRuota     '
    aRu(1) = r
    If r = 11 Then Ctr = 10: Else Ctr = 1
    idOrd = Ordinamento
    TipOrd = TipoOrdinamento
    
    ReDim aTitolo(21)
    aTitolo(1) = "ID"
    aTitolo(2) = "Comb."
    aTitolo(3) = "Freq"
    aTitolo(4) = "Scarto"
    aTitolo(5) = "Rit"
    aTitolo(6) = "RitMed"
    aTitolo(7) = "RitSto"
    aTitolo(8) = "IncR.S"
    aTitolo(9) = "DevStd"
    aTitolo(10) = "GEN"
    aTitolo(11) = "FEB"
    aTitolo(12) = "MAR"
    aTitolo(13) = "APR"
    aTitolo(14) = "MAG"
    aTitolo(15) = "GIU"
    aTitolo(16) = "LUG"
    aTitolo(17) = "AGO"
    aTitolo(18) = "SET"
    aTitolo(19) = "OTT"
    aTitolo(20) = "NOV"
    aTitolo(21) = "DIC"
    
    InitTabella aTitolo,RGB(121,200,246),,3,RGB(255,255,255),"Consolas"
    nEstr=contaEstrazioni(Ini,Fin,r)
    nValore = Round(CicloTeorico(nCombinazione,nSorte,CInt(Ctr)),2)
    freqTeorica = Round(Dividi(nEstr,nValore),2)
    aColonne = SviluppoIntegrale(nNumeri,nCombinazione)
    nEle = 0
    For k = 1 To UBound(aColonne)
            s = ""
        For e = 1 To nCombinazione
            s = s & Format2(aColonne(k,e)) & "."
            aNumeri(e) = aColonne(k,e)
            Call StatisticaFormazioneTurbo(aNumeri,aRu,nSorte,ritardo,ritardomax,IncrRitMax,Frequenza,Ini,Fin)
        
            TUTTI = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,"TUTTI")
            ' se per ottenere la frequenza mese con il ciclo sottostante sballano i calcoli .Perchè?
            'ReDim idM(12)
            'For Z= 1 To 12
            
            'idM(Z)=TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,Z)
            'Next

            Gennaio = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,1)
            Febbraio = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,2)
            Marzo = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,3)
            Aprile = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,4)
            Maggio = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,5)
            Giugno = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,6)
            Luglio = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,7)
            Agosto = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,8)
            Settembre = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,9)
            Ottobre = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,10)
            Novembre = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,11)
            Dicembre = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,12)
            
            RitMese = TrovaRitardoMese(aNumeri,aRu,nSorte,Ini,Fin,"TUTTI")
            Scarto = Round(TUTTI - freqTeorica,2)
        
            Call ElencoRitardiTurbo(aNumeri,aRu,nSorte,Ini,Fin,aRetRitardi,aRetIdEstr)
    
            RitMed = RitardoMedio(aRetRitardi)
    
            
            DevStd = CalcolaDeviazioneStd(aRetRitardi)
            
        Next
        s = Left(s,Len(s) - 1)
        
        ReDim aRisultato(21)
        aRisultato(1) = k
        aRisultato(2) = s
        aRisultato(3) = TUTTI
        aRisultato(4) = Scarto
        aRisultato(5) = RitMese
        aRisultato(6) = RitMed
        aRisultato(7) = ritardomax
        aRisultato(8) = IncrRitMax
        aRisultato(9) = DevStd
        aRisultato(10) = Gennaio
        aRisultato(11) = Febbraio
        aRisultato(12) = Marzo'
        aRisultato(13) = Aprile
        aRisultato(14) = Maggio
        aRisultato(15) = Giugno
        aRisultato(16) = Luglio
        aRisultato(17) = Agosto
        aRisultato(18) = Settembre
        aRisultato(19) = Ottobre
        aRisultato(20) = Novembre
        aRisultato(21) = Dicembre
        Call AddRigaTabella(aRisultato,,,3,RGB(0,0,0),"Consolas")
    
        Call SetColoreCella(CInt(idOrd),RGB(221,255,230),2)
        Call SetColoreCella(Mese(EstrazioneFin) + 9,RGB(215,215,255),2)
    Next
    Scrivi "Tabella Statistica per formazioni libere" & " ",1,,RGB(252,227,143),,5
    Scrivi
    Scrivi "Range Ricerca Estrazioni dal :{" & DataEstrazione(Ini) & " } al : {" & DataEstrazione(Fin) & "}",1,,,,3
    Scrivi "Estrazioni Totali Analizzati :{" & nEstr & "}",1,,,,3
    Scrivi "Numeri di ricerca =          :{" & StringaNumeri(nNumeri) & "}",1,,,,3
    Scrivi "Sviluppo numeri in           :{" & k - 1 & " " & NomeCombinazione(nCombinazione) & "}",1,,,,3
    Scrivi "Analesi combinazione per     :{" & NomeSorte(nSorte) & "}",1,,,,3
    Scrivi "Ciclo Teorico                :{" & nValore & "}",1,,,,3
    Scrivi "Frequenza Teorica            :{" & freqTeorica & "}",1,,,,3
    Scrivi "Ruota di ricerca             :{" & NomeRuota(aRu(1)) & "}",1,,,,3
    Scrivi "Ordinamento colonna num      :{" & aTitolo(idOrd) & "}",1,,,,3
    Scrivi "Ordino Colonna in modo       :{" & TipOrd & "}",1,,,,3
    Scrivi
    Call SetTableWidth("100%")
    Call CreaTabella
End Sub



Function TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,fin,nMese)
    Dim k
    Dim FreqMese
    For k = Ini To fin
        If Mese(k) = nMese Then
            Call ImpostaEstrazione(k,True)
        Else
            Call ImpostaEstrazione(k,False)
        End If
    Next
    For k = Ini To fin
        If nMese = "TUTTI" Then Call ImpostaEstrazione(k,True)
    Next
    FreqMese = SerieFreqTurbo(Ini,fin,aNumeri,aRu,nSorte)
    TrovaFrequenzaMese = FreqMese
End Function
Function TrovaRitardoMese(aNumeri,aRu,nSorte,Ini,fin,nMese)
    Dim k
    Dim RitMese
    For k = Ini To fin
        If Mese(k) = nMese Then
            Call ImpostaEstrazione(k,True)
        Else
            Call ImpostaEstrazione(k,False)
        End If
    Next
    For k = Ini To fin
        If nMese = "TUTTI" Then Call ImpostaEstrazione(k,True)
    Next
    RitMese = SerieRitardoTurbo(Ini,fin,aNumeri,aRu,nSorte)
    TrovaRitardoMese = RitMese
End Function
Function NomeCombinazione(a)
    Dim ris
    Select Case a
    Case 1
        ris = "Estratti"
    Case 2
        ris = "Ambi"
    Case 3
        ris = "Terzine"
    Case 4
        ris = "Quartine"
    Case 5
        ris = "Cinquine"
    End Select
    NomeCombinazione = ris
End Function
Function Ordinamento
    Dim Ord
    ReDim aTitolo(19)
    aTitolo(1) = "Freq"
    aTitolo(2) = "Scarto"
    aTitolo(3) = "Rit"
    aTitolo(4) = "RitMed"
    aTitolo(5) = "RitSto"
    aTitolo(6) = "IncR.S"
    aTitolo(7) = "DevStd"
    aTitolo(8) = "GEN"
    aTitolo(9) = "FEB"
    aTitolo(10) = "MAR"
    aTitolo(11) = "APR"
    aTitolo(12) = "MAG"
    aTitolo(13) = "GIU"
    aTitolo(14) = "LUG"
    aTitolo(15) = "AGO"
    aTitolo(16) = "SET"
    aTitolo(17) = "OTT"
    aTitolo(18) = "NOV"
    aTitolo(19) = "DIC"
    Ord = ScegliOpzioneMenu(aTitolo,0,"Seleziona Ordinamento  per la colonna :") + 2
    Ordinamento = Ord
End Function
Function TipoOrdinamento
    Dim Ord
    ReDim atitolo(1)
    atitolo(0) = "Ascendente"
    atitolo(1) = "Discendente"
    Ord = ScegliOpzioneMenu(atitolo,0,"Seleziona Tipo Ordinamento  :")
    If Ord = 0 Then Ord = - 1 : Else Ord = 1
    TipoOrdinamento = Ord
End Function
Function ScegliCombinazione
    Dim combinazione
    ReDim aVoci(5)
    aVoci(1) = "Estratti"
    aVoci(2) = "Ambi"
    aVoci(3) = "Terzine"
    aVoci(4) = "Quartine"
    aVoci(5) = "Cinquine"
    combinazione = ScegliOpzioneMenu(aVoci,1," Combina i numeri In :")
    ScegliCombinazione = CInt(combinazione)
End Function
Function SelEsito
    Dim Esito
    ReDim aVoci(5)
    aVoci(1) = "Estratto"
    aVoci(2) = "Ambo"
    aVoci(3) = "Terno"
    aVoci(4) = "Quaterna"
    aVoci(5) = "Cinquina"
    Esito = ScegliOpzioneMenu(aVoci,1," Analesi per Sorte di : ")
    SelEsito = CInt(Esito)
End Function
Function SelRuota
    Dim Ruota
    ReDim aVoci(12)
    aVoci(1) = "BARI"
    aVoci(2) = "CAGLIARI"
    aVoci(3) = "FIRENZE"
    aVoci(4) = "GENOVA"
    aVoci(5) = "MILANO"
    aVoci(6) = "NAPOLI"
    aVoci(7) = "PALERMO"
    aVoci(8) = "ROMA"
    aVoci(9) = "TORINO"
    aVoci(10) = "VENEZIA"
    aVoci(11) = "TUTTE"
    aVoci(12) = "NAZIONALE"
    Ruota = ScegliOpzioneMenu(aVoci,1," Analizza Ruota di : ")
    SelRuota = CInt(Ruota)
End Function
Function SelMese
    Dim Ruota
    ReDim aVoci(12)
    aVoci(1) = "GENNAIO"
    aVoci(2) = "FEBRAIO"
    aVoci(3) = "MARZO"
    aVoci(4) = "APRILE"
    aVoci(5) = "MAGGIO"
    aVoci(6) = "GIUGNO"
    aVoci(7) = "LUGLIO"
    aVoci(8) = "AGOSTO"
    aVoci(9) = "SETTEMBRE"
    aVoci(10) = "OTTOBRE"
    aVoci(11) = "NOVEMBRE"
    aVoci(12) = "DICEMBRE"
    Ruota = ScegliOpzioneMenu(aVoci,1," Analizza Mese di : ")
    SelMese = CInt(Ruota)
End Function
Function InizioArchivio
    Dim es,Inizio
    ReDim aVoci(EstrazioneFin)
    For es = 1 To EstrazioneFin
        aVoci(es) = DataEstrazione(es)
    Next
    Inizio = ScegliOpzioneMenu(aVoci,1,"Inserisci Data Inizio Analisi")
    InizioArchivio = Inizio
End Function
Function RitardoMedio(aRitardi())
    Dim k
    Dim nElementi
    Dim nMedia
    For k = 1 To UBound(aRitardi) - 1
        nElementi = nElementi + 1
        nMedia = nMedia + aRitardi(k)
    Next
    nMedia = Round(Dividi(nMedia,nElementi),2)
    RitardoMedio = nMedia
End Function
Function CalcolaDeviazioneStd(aRitardi())
    Dim k
    Dim somRit,nMedia,nElementi,nVarianza,nSomSQVar
    For k = 1 To UBound(aRitardi) - 1
        nElementi = nElementi + 1
        somRit = somRit + aRitardi(k)
    Next
    nMedia = Round(Dividi(somRit,nElementi))
    For k = 1 To UBound(aRitardi) - 1
        nSomSQVar = nSomSQVar +((nMedia - aRitardi(k)) ^ 2)
        nVarianza = Round(Dividi(nSomSQVar,nElementi),2)
    Next
    CalcolaDeviazioneStd = Round(Sqr(nVarianza),2)
End Function
 Function contaEstrazioni(Ini,fin,r)
    Dim conta ,es
        
    For es= Ini To fin
    If Posizione(es,r,0)=False Then conta=conta+1
    
    
    Next
    
    contaEstrazioni= conta
End Function


inserisco immagine output:

OutputTab.jpg
 
Mi sono accorto che se compongo le terzine per sorte di ambo il ritardo medio su tutte è errato, devo trovare l'errore, i calcoli sono errati e da ritenersi non validi,vedo di mettere a posto.
 
l'errore è nell'impostazione della data di estrazione, se inserisco le prime estrazione i valori sono errati,non capisco perchè.......Forse ho sbagliato la funzione del ritardo? non è valida su TuTTe? Da studiare.....Non mi ero accorto di questi, chiedo scusa...Buona giornata a tutti
 
Function InizioArchivio; ;Dim es,Inizio; ;ReDim aVoci(EstrazioneFin); ;For es = 3914 To EstrazioneFin; ;aVoci(es) = DataEstrazione(es); ;Next; ;Inizio = ScegliOpzioneMenu(aVoci,3914,"Inserisci Data Inizio Analisi"); ;InizioArchivio = Inizio;;End Function;..............................................................................Corregendo la funzione InizioEstrazioni e facendo partire la verifica dal 05/01/46 sembra funzionare correttamente, perfavore se avete altri software provate a testare i risultati,,, grazie cordiali saluti
 
Ciao I legend.

In questa funzione:
Codice:
Function contaEstrazioni(Ini,fin,r)
    Dim conta ,es
         For es= Ini To fin
          If Posizione(es,r,0)=False Then conta=conta+1
        Next
    
    contaEstrazioni= conta
End Function

Ti consiglio di usare

If SommaEstratti (Es,R) >= 15 Then

E' abbastanza veloce ... ed anche più precisa nell'individuare estrazioni VALIDE.

:)
 
Ciao Joe ,grazie,ho imparato una cosa nuova:
ecco la versione con la colonna Lim ceb, che corrisponde alla disuguaglianza di Cebicev, In Pratica grazie a questa possiamo stabilire quale potrebbe essere il limite massimo di sortita di una formazione,
Codice:
Option Explicit
' Lo script si è arricchito un po alla volta quindi si è rallentato nella sua esecuzione
' l'utilizzo è una semplice  ricerca statistica delle combinazioni scelte
' possiamo trovare la frequenza globale della formazione e allo stesso tempo vedere la frequenza mese per mese
' il ritardo cronologico,il ritardo medio,il ritardo storico,e l'incremento del medesimo
' il calcolo effettuato e l'output parrebbe essere  corretto , ma consiglio sempre di verificare con altre fonti , per eliminare o segnalare
'eventuali errori sempre possibili vista l'inesperienza.
' lo script non restituisce  (e non vuole farlo)  previsioni
' script by  I legend per  gli amici di lottoced
'Ringraziamenti :
' senza gli esempi di Mike , di Claudio, di LuigiB, e le *importantissime* Lezioni/spiegazioni di Joe
' non sarei riuscito a scrivere una solo riga
' Purtoppo l'ordina matrice non funziona, le form di scelta sono pronte ma non so come posso utilizzarle
' Se qualcuno vuole ottimizzare lo script  o indicarmi dove ottimizzare sarei davvero grato
'Buono studio  e divertimento a tutti
Sub Main
    Dim Ini,Fin,nEstr,es,nMese,k,x,r,nValore,idOrd,TipOrd,aRetRitardi,Ctr,DevStd,disCeb,ScaCeb
    Dim TUTTI,Gennaio,Febbraio,Marzo,Aprile,Maggio,Giugno,Luglio,Agosto,Settembre,Ottobre,Novembre,Dicembre
    Dim s,e,ritardo,ritardomax,IncrRitMax,Frequenza,freqTeorica,RitMed,FreqMese,freq,RitMese,Scarto
    Dim nNumeri,aColonne
    Dim aNumeri(90)
    Dim aRu(1)
    Dim nCombinazione,nSorte,nCiclo
    ReDim aRit(0)
    ReDim aRetIdEstr(0)
    Ini = InizioArchivio ' funzione inizio data archivio
    Fin = EstrazioneFin
    'nEstr = Fin - Ini ' numero di estrazioni da analizzare  serve per calcolare frequenze
    Call ScegliNumeri(nNumeri)
    nCombinazione = ScegliCombinazione
    nSorte = CInt(SelEsito)
    r = SelRuota ' funziona per selezionare la ruota  statistica su tutte o solo per una ruota
    'nMese = SelMese
    aRu(1) = r
    If r = 11 Then Ctr = 10: Else Ctr = 1 ' valore utilizzato per calcolo del ciclo teorico
    idOrd = Ordinamento ' seleziono la colonna che voglio ordinare
    TipOrd = TipoOrdinamento ' seleziono in che modo applicare l'ordinamento -1 ascendente,1 discendente
    'scrivo qui come vorrei utilizzare ordina matrice  '''''
    ' purtroppo non riesco ad applicarla alla tabella con sceglinumeri è facile
    'OrdinaMatrice aRisultato,TipOrd,idOrd
    '
    'Imposto i titoli delle colonne della tabella statistica
    '
    ReDim aTitolo(23)
    aTitolo(1) = "ID" ' Numero di combinazione
    aTitolo(2) = "Comb." '  combinazioni ottenute
    aTitolo(3) = "Freq" ' frequenza
    aTitolo(4) = "Scarto" ' differenza tra freq.reale e frequenza teorica
    aTitolo(5) = "Rit" ' ritardo cronologico attuale
    aTitolo(6) = "RitMed" ' ritardo medio combunazione
    aTitolo(7) = "RitSto"
    aTitolo(8) = "IncR.S"
    aTitolo(9) = "DevStd"
    aTitolo(10) = "DisCeb88%"
    aTitolo(11) = "ScaCeb"
    aTitolo(12) = "GEN" ' frequenza nel mese di....
    aTitolo(13) = "FEB"' frequenza nel mese di....
    aTitolo(14) = "MAR" ' /////
    aTitolo(15) = "APR" '////
    aTitolo(16) = "MAG" '////
    aTitolo(17) = "GIU"
    aTitolo(18) = "LUG"
    aTitolo(19) = "AGO"
    aTitolo(20) = "SET"
    aTitolo(21) = "OTT"
    aTitolo(22) = "NOV"
    aTitolo(23) = "DIC"
    ' inizializzo la tabella '''la prima riga
    InitTabella aTitolo,RGB(108,194,243),,3,RGB(255,255,255),"Consolas"
    ' qui scrivo il messaggio di avanzamento elaborazione
    ' non è il posto più corretto ma non rallenta tanto l'esecuzione
    'For es = Ini To Fin
    'Call Messaggio("elaborazione in corso estrazione n°:" & es)
    'Call AvanzamentoElab(Ini,Fin,es)
    'Next
    nEstr = ContaEstrazioni(Ini,Fin,r)
    nValore = Round(CicloTeorico(nCombinazione,nSorte,CInt(Ctr)),2)' ctr= 1 sta per 1 ruota, ctr = 10 per tutte
    freqTeorica = Round(Dividi(nEstr,nValore),2) 'numero di estrazioni esaminate / il proprio CicloTeorico
    aColonne = SviluppoIntegrale(nNumeri,nCombinazione) ' sviluppo i l'array dei numeri scelti ,nella combinazione scelta
    For k = 1 To UBound(aColonne) ' ciclo per leggere la colonna k della matrice aColonne
        s = "" ' dichiaro la stringa combinazione vuota
        For e = 1 To nCombinazione ' ciclo la combinazione selezionata
            s = s & Format2(aColonne(k,e)) & "." ' questa è la stringa di ritorno dei numeri combinati
            aNumeri(e) = aColonne(k,e) 'matrice dei numeri da analizzare
            Call StatisticaFormazioneTurbo(aNumeri,aRu,nSorte,ritardo,ritardomax,IncrRitMax,Frequenza,Ini,Fin)
            ' qui analizzo le frequenze con la funzione trova frequenze per mese
            TUTTI = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,"TUTTI")
            Gennaio = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,1)
            Febbraio = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,2)
            Marzo = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,3)
            Aprile = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,4)
            Maggio = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,5)
            Giugno = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,6)
            Luglio = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,7)
            Agosto = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,8)
            Settembre = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,9)
            Ottobre = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,10)
            Novembre = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,11)
            Dicembre = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,12)
            ' funzione per calcolare il ritardo globale della formazione
            ' questo è un espediente che ho dovuto analizzare visto la frequenza mese
            RitMese = TrovaRitardoMese(aNumeri,aRu,nSorte,Ini,Fin,"TUTTI")
            Scarto = Round(TUTTI - freqTeorica,2)
            ' richiamo la funzione elenca ritardi, per poter attingere alla marice che elenca i ritardi  voce:( aRetRitardi)
            Call ElencoRitardiTurbo(aNumeri,aRu,nSorte,Ini,Fin,aRetRitardi,aRetIdEstr)
            ' scritta funzione per calcolare il ritardo medio della formazione
            RitMed = RitardoMedio(aRetRitardi)
            ' scritta funzione per calcolo deviazione standard della funzione
            '
            DevStd = CalcolaDeviazioneStd(aRetRitardi)
            disCeb = Round(RitMed +(3*DevStd),2) ' 10*(devstd)limite prossimo al 99% , 5*(devstd) limite al 96%, 3*(devstd) limite al 88%
            ScaCeb = Round(disCeb - RitMese,2)
            '
        Next
        s = Left(s,Len(s) - 1) ' tolgo l'ultimo punto dalla stringa della formazione altrimenti sarebbe es : "12.22.33." anzichè : "12.22.33"
        'For es = Ini To Fin
        'Call AvanzamentoElab(1,UBound(aColonne),k)
        'Call Messaggio("Sto Elaborando la Combinazione :" & s)
        'Next
        ReDim aRisultato(23)
        aRisultato(1) = k ' id
        aRisultato(2) = s ' combinazioni analizzate
        aRisultato(3) = TUTTI'frequenza combinazione
        aRisultato(4) = Scarto ' differenza freq.reeale e differenza teorica
        aRisultato(5) = RitMese ' ritardo cronologico
        aRisultato(6) = RitMed ' ritardo medio
        aRisultato(7) = ritardomax ' ritardo storico
        aRisultato(8) = IncrRitMax ' incremento ritardo storico
        aRisultato(9) = DevStd ' deviazione standard
        aRisultato(10) = disCeb 'disegualianza di cebicev
        aRisultato(11) = ScaCeb ' scarto tra valore ipotizzato e valore del ritardo reale
        aRisultato(12) = Gennaio ' frequenza per mese
        aRisultato(13) = Febbraio'
        aRisultato(14) = Marzo'
        aRisultato(15) = Aprile
        aRisultato(16) = Maggio
        aRisultato(17) = Giugno
        aRisultato(18) = Luglio
        aRisultato(19) = Agosto
        aRisultato(20) = Settembre
        aRisultato(21) = Ottobre
        aRisultato(22) = Novembre
        aRisultato(23) = Dicembre
        Call AddRigaTabella(aRisultato,,,3,RGB(0,0,0),"Consolas")
        'se decidessi di ordinare il mese? legge il primo colore? No Legge l'ultima istruzione
        Call SetColoreCella(CInt(idOrd),RGB(221,255,230),2)
        Call SetColoreCella(Mese(EstrazioneFin) + 11,RGB(215,215,255),2)
    Next
    Scrivi "Tabella Statistica per formazioni libere" & " ",1,,RGB(252,227,143),,5
    Scrivi
    Scrivi "Range Ricerca Estrazioni dal :{" & GetInfoEstrazione(Ini) & " } al : {" & DataEstrazione(Fin) & "}",1,,,,3
    Scrivi "Estrazioni Totali Analizzati :{" & nEstr & "}",1,,,,3
    Scrivi "Numeri di ricerca            :{" & StringaNumeri(nNumeri) & "}",1,,,,3
    Scrivi "Sviluppo numeri in           :{" & k - 1 & " " & NomeCombinazione(nCombinazione) & "}",1,,,,3
    Scrivi "Analesi combinazione per     :{" & NomeSorte(nSorte) & "}",1,,,,3
    Scrivi "Ciclo Teorico                :{" & nValore & "}",1,,,,3
    Scrivi "Frequenza Teorica            :{" & freqTeorica & "}",1,,,,3
    Scrivi "Ruota di ricerca             :{" & NomeRuota(aRu(1)) & "}",1,,,,3
    Scrivi "Ordinamento colonna num      :{" & aTitolo(idOrd) & "}",1,,,,3
    Scrivi "Ordino Colonna in modo       :{" & TipOrd & "}",1,,,,3
    Scrivi
    Call SetTableWidth("100%")
    Call CreaTabella
End Sub
' riporto qui di seguito tutte le funzioni utilizzate
' per la sub main
' ovviamente possono essere ottimizzate
Function TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,fin,nMese)
    Dim k
    Dim FreqMese
    For k = Ini To fin
        If Mese(k) = nMese Then
            Call ImpostaEstrazione(k,True)
        Else
            Call ImpostaEstrazione(k,False)
        End If
    Next
    For k = Ini To fin
        If nMese = "TUTTI" Then Call ImpostaEstrazione(k,True)
    Next
    FreqMese = SerieFreqTurbo(Ini,fin,aNumeri,aRu,nSorte)
    TrovaFrequenzaMese = FreqMese
End Function
Function TrovaRitardoMese(aNumeri,aRu,nSorte,Ini,fin,nMese)
    Dim k
    Dim RitMese
    For k = Ini To fin
        If Mese(k) = nMese Then
            Call ImpostaEstrazione(k,True)
        Else
            Call ImpostaEstrazione(k,False)
        End If
    Next
    For k = Ini To fin
        If nMese = "TUTTI" Then Call ImpostaEstrazione(k,True)
    Next
    RitMese = SerieRitardoTurbo(Ini,fin,aNumeri,aRu,nSorte)
    TrovaRitardoMese = RitMese
End Function
Function NomeCombinazione(a)
    Dim ris
    Select Case a
    Case 1
        ris = "Estratti"
    Case 2
        ris = "Ambi"
    Case 3
        ris = "Terzine"
    Case 4
        ris = "Quartine"
    Case 5
        ris = "Cinquine"
    End Select
    NomeCombinazione = ris
End Function
Function Ordinamento
    Dim Ord
    ReDim aTitolo(23)
        aTitolo(1) = "Freq" ' frequenza
    aTitolo(2) = "Scarto" ' differenza tra freq.reale e frequenza teorica
    aTitolo(3) = "Rit" ' ritardo cronologico attuale
    aTitolo(4) = "RitMed" ' ritardo medio combunazione
    aTitolo(5) = "RitSto"
    aTitolo(6) = "IncR.S"
    aTitolo(7) = "DevStd"
    aTitolo(8) = "DisCeb"
    aTitolo(9) = "ScaCeb"
    aTitolo(10) = "GEN" ' frequenza nel mese di....
    aTitolo(11) = "FEB"' frequenza nel mese di....
    aTitolo(12) = "MAR" ' /////
    aTitolo(13) = "APR" '////
    aTitolo(14) = "MAG" '////
    aTitolo(15) = "GIU"
    aTitolo(16) = "LUG"
    aTitolo(17) = "AGO"
    aTitolo(18) = "SET"
    aTitolo(19) = "OTT"
    aTitolo(20) = "NOV"
    aTitolo(21) = "DIC"

    Ord = ScegliOpzioneMenu(aTitolo,1,"Seleziona Ordinamento  per la colonna :") + 2
    Ordinamento = Ord
End Function
Function TipoOrdinamento
    Dim Ord
    ReDim atitolo(1)
    atitolo(0) = "Ascendente"
        atitolo(1) = "Discendente"
    Ord = ScegliOpzioneMenu(atitolo,0,"Seleziona Tipo di Ordinamento  :")
    If Ord = 0 Then Ord = - 1 : Else Ord = 1
    TipoOrdinamento = Ord
End Function
Function ScegliCombinazione
    Dim combinazione
    ReDim aVoci(5)
    aVoci(1) = "Estratti"
    aVoci(2) = "Ambi"
    aVoci(3) = "Terzine"
    aVoci(4) = "Quartine"
    aVoci(5) = "Cinquine"
    combinazione = ScegliOpzioneMenu(aVoci,1," Combina i numeri In :")
    ScegliCombinazione = CInt(combinazione)
End Function
Function SelEsito
    Dim Esito
    ReDim aVoci(5)
    aVoci(1) = "Estratto"
    aVoci(2) = "Ambo"
    aVoci(3) = "Terno"
    aVoci(4) = "Quaterna"
    aVoci(5) = "Cinquina"
    Esito = ScegliOpzioneMenu(aVoci,1," Analesi per Sorte di : ")
    SelEsito = CInt(Esito)
End Function
Function SelRuota
    Dim Ruota
    ReDim aVoci(12)
    aVoci(1) = "BARI"
    aVoci(2) = "CAGLIARI"
    aVoci(3) = "FIRENZE"
    aVoci(4) = "GENOVA"
    aVoci(5) = "MILANO"
    aVoci(6) = "NAPOLI"
    aVoci(7) = "PALERMO"
    aVoci(8) = "ROMA"
    aVoci(9) = "TORINO"
    aVoci(10) = "VENEZIA"
    aVoci(11) = "TUTTE"
    aVoci(12) = "NAZIONALE"
    Ruota = ScegliOpzioneMenu(aVoci,1," Analizza Ruota di : ")
    SelRuota = CInt(Ruota)
End Function
Function SelMese
    Dim Ruota
    ReDim aVoci(12)
    aVoci(1) = "GENNAIO"
    aVoci(2) = "FEBRAIO"
    aVoci(3) = "MARZO"
    aVoci(4) = "APRILE"
    aVoci(5) = "MAGGIO"
    aVoci(6) = "GIUGNO"
    aVoci(7) = "LUGLIO"
    aVoci(8) = "AGOSTO"
    aVoci(9) = "SETTEMBRE"
    aVoci(10) = "OTTOBRE"
    aVoci(11) = "NOVEMBRE"
    aVoci(12) = "DICEMBRE"
    Ruota = ScegliOpzioneMenu(aVoci,1," Analizza Mese di : ")
    SelMese = CInt(Ruota)
End Function
Function InizioArchivio
    Dim es,Inizio
    ReDim aVoci(EstrazioneFin)
    For es = 3914 To EstrazioneFin
        aVoci(es) = DataEstrazione(es)
    Next
    Inizio = ScegliOpzioneMenu(aVoci,3914,"Inserisci Data Inizio Analisi")
    InizioArchivio = Inizio
End Function
Function RitardoMedio(aRitardi())
    Dim k
    Dim nElementi
    Dim nMedia
    For k = 1 To UBound(aRitardi) - 1
        nElementi = nElementi + 1
        nMedia = nMedia + aRitardi(k)
    Next
    nMedia = Round(Dividi(nMedia,nElementi),2)
    RitardoMedio = nMedia
End Function
Function CalcolaDeviazioneStd(aRitardi())
    Dim k
    Dim somRit,nMedia,nElementi,nVarianza,nSomSQVar
    For k = 1 To UBound(aRitardi) - 1
        nElementi = nElementi + 1
        somRit = somRit + aRitardi(k)
    Next
    nMedia = Round(Dividi(somRit,nElementi))
    For k = 1 To UBound(aRitardi) - 1
        nSomSQVar = nSomSQVar +((nMedia - aRitardi(k)) ^ 2)
        nVarianza = Round(Dividi(nSomSQVar,nElementi),2)
    Next
    CalcolaDeviazioneStd = Round(Sqr(nVarianza),2)
End Function

Function ContaEstrazioni(Ini,Fin,r)
Dim Conta,es
For es = Ini To Fin
If SommaEstratti(es,r) >= 15 Then Conta = Conta + 1  ' versione proposta da Joe grande:-)
Next
ContaEstrazioni = Conta
End Function
grazie joe per il resto che te ne pare?
questa è la versione remmata
Buona serata a tutti
 
Ultima modifica:
Bravo I legend, finalmente sei riuscito a postare uno script in modo leggibile.

Bravissimo oltre che per lo script interessante anche per lo stile.

Giusto anche che lo firmi e quando c'è la stoffa e l'impegno caparbio si vedono i risultati.

Un saluto.
 
Ciao I legend ... un saluto naturalmente anche a Mike,

ed a tutte/i gli altri frequentatori di questi spazi.

Sottoscrivo quanto già espresso da Mike.

Si interessante anche per le funzioni che hai aggiunto e che trovo parecchio originali.

Hai fatto bene dunque a sottolinearlo scrivendo:


"ecco la versione con la colonna Lim ceb, che corrisponde alla disuguaglianza di Cebicev,

In Pratica grazie a questa possiamo stabilire quale potrebbe essere il limite massimo di sortita di una formazione"

Ho come proposito di verificare ... un pò tutto, ed anche in questo, sono in accordo con Mike ...

ritenendo che ovunque possa esserci per chiunque qualcosa da imparare e migliorarsi.

Anche ... nelle richieste apparentemente più banali, o più complicate,

che semplicemente noi, soli, sterili, sapremmo ... "concepire".

:) Buona serata.
 
ciao Mike, grazie mille x i complimenti,e, sulla caparbietà ci hai azzeccato:-)........Se si riesce ad ottimizzare sarebbe bello farne un plug-in A dopo, spero che qualcuno lo trovi utile anche se un po lento... buona serata:-).... Con lo script provate ad inserire i numeri: 11.42.44.51.55.58.66 compnete in terzine per ambo su tutte... se avete aggiornato selezionate le estrazioni nel range rosa alla penultima estrazione, nella voce"disCeb = Round(RitMed +(10*DevStd),2)" sostituite 5 con 10 come è scritto fate partire lo script e valutate voi i risultati, purtroppo non riesco di nuovo a postare le immagini.... a dopo....
 
Ciao joè è bello leggerti,e vedere che concordi con mike,mi potresti dare qualche input per ordinare le colonne della tabella?
grazie alle tue spiegazioni ed esempi sto capendo la logica del linguaggio.(come ragionare in pratica:o)
HP_OUTPUT.jpg
 
mi potresti dare qualche input per ordinare le colonne della tabella?

Ciao, I Legend, nel codice creatabella esiste la possibilità di ordinare in modo ascendente o discendente la tabella per colonna basta dargli il numero della colonna che sia freq o ritardo o altro e naturalmente puoi definirlo dall'inputBox.

leggi il codice con la guidascript

CreaTabella

CreaTabella(Optional OrdinaPerColonna = 0, Optional VersoOrdinamento = 0, Optional TipoOrdinamento = 0, Optional MaxRighe = 0, optional TipoTabella =0)


I complimenti sono veritieri e le tue idee meritano approfondimento.
 
dim z
Redim nMese(12)
for z=1 to 12
nMese(z)=TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,Z)
Next
questo per ottimizzare il codice ma la frequenza globale risulta errata .Perchè?

Grazie mille Mike Grande il tuo suggerimento come sempre è stato utilissimo.
a livello estetico nella combobox InizioEstrazioni facciamo partire l'archivio da 3914 ma restituisce una parte vuota che è orribile , come si può fare?
se faccio
creatabella(idord,tipOrd,0) 'tipOrd discendente
dovrebbe ordinare a livello numerico ma la barra d'intestazione finisce giù ....perchè
poi altre cose ma un po per volta....
Grazie
un saluto
 
buona notte a tutti
ecco un altra piccola ottimizzazione nel codice credo sia più veloce scritto cosi
Codice:
Option Explicit
' Lo script si è arricchito un po alla volta quindi si è rallentato nella sua esecuzione
' l'utilizzo è una semplice  ricerca statistica delle combinazioni scelte
' possiamo trovare la frequenza globale della formazione e allo stesso tempo vedere la frequenza mese per mese
' il ritardo cronologico,il ritardo medio,il ritardo storico,e l'incremento del medesimo
' il calcolo effettuato e l'output parrebbe essere  corretto , ma consiglio sempre di verificare con altre fonti , per eliminare o segnalare
'eventuali errori sempre possibili vista l'inesperienza.
' lo script non restituisce  (e non vuole farlo)  previsioni
' script by  I legend per  gli amici di lottoced
'Ringraziamenti :
' senza gli esempi di Mike , di Claudio, di LuigiB, e le *importantissime* Lezioni/spiegazioni di Joe
' non sarei riuscito a scrivere una solo riga
' Purtoppo l'ordina matrice non funziona, le form di scelta sono pronte ma non so come posso utilizzarle
' Se qualcuno vuole ottimizzare lo script  o indicarmi dove ottimizzare sarei davvero grato
'Buono studio  e divertimento a tutti
Sub Main
    Dim Ini,Fin,nEstr,es,nMese,k,x,r,nValore,idOrd,TipOrd,aRetRitardi,Ctr,DevStd,disCeb,ScaCeb
    Dim TUTTI,Gennaio,Febbraio,Marzo,Aprile,Maggio,Giugno,Luglio,Agosto,Settembre,Ottobre,Novembre,Dicembre
    Dim s,e,ritardo,ritardomax,IncrRitMax,Frequenza,freqTeorica,RitMed,FreqMese,freq,RitMese,Scarto
    Dim nNumeri,aColonne
    Dim aNumeri(90)
    Dim aRu(1)
    Dim nCombinazione,nSorte,nCiclo
    ReDim aRit(0)
    ReDim aRetIdEstr(0)
    Ini = InizioArchivio ' funzione inizio data archivio
    Fin = EstrazioneFin
    'nEstr = Fin - Ini ' numero di estrazioni da analizzare  serve per calcolare frequenze
    Call ScegliNumeri(nNumeri)
    nCombinazione = ScegliCombinazione
    nSorte = CInt(SelEsito)
    r = SelRuota ' funziona per selezionare la ruota  statistica su tutte o solo per una ruota
    'nMese = SelMese
    aRu(1) = r
    If r = 11 Then Ctr = 10: Else Ctr = 1 ' valore utilizzato per calcolo del ciclo teorico
    idOrd = Ordinamento ' seleziono la colonna che voglio ordinare
    TipOrd = TipoOrdinamento ' seleziono in che modo applicare l'ordinamento -1 ascendente,1 discendente
    'scrivo qui come vorrei utilizzare ordina matrice  '''''
    ' purtroppo non riesco ad applicarla alla tabella con sceglinumeri è facile
    'OrdinaMatrice aRisultato,TipOrd,idOrd
    '
    'Imposto i titoli delle colonne della tabella statistica
    '
    ReDim aTitolo(23)
    aTitolo(1) = "ID" ' Numero di combinazione
    aTitolo(2) = "Comb." '  combinazioni ottenute
    aTitolo(3) = "Freq" ' frequenza
    aTitolo(4) = "Scarto" ' differenza tra freq.reale e frequenza teorica
    aTitolo(5) = "Rit" ' ritardo cronologico attuale
    aTitolo(6) = "RitMed" ' ritardo medio combunazione
    aTitolo(7) = "RitSto"
    aTitolo(8) = "IncR.S"
    aTitolo(9) = "DevStd"
    aTitolo(10) = "DisCeb"
    aTitolo(11) = "ScaCeb96%"
    aTitolo(12) = "GEN" ' frequenza nel mese di....
    aTitolo(13) = "FEB"' frequenza nel mese di....
    aTitolo(14) = "MAR" ' /////
    aTitolo(15) = "APR" '////
    aTitolo(16) = "MAG" '////
    aTitolo(17) = "GIU"
    aTitolo(18) = "LUG"
    aTitolo(19) = "AGO"
    aTitolo(20) = "SET"
    aTitolo(21) = "OTT"
    aTitolo(22) = "NOV"
    aTitolo(23) = "DIC"
    ' inizializzo la tabella '''la prima riga
    InitTabella aTitolo,RGB(108,194,243),,3,RGB(255,255,255),"Consolas"
    ' qui scrivo il messaggio di avanzamento elaborazione
    ' non è il posto più corretto ma non rallenta tanto l'esecuzione
    'For es = Ini To Fin
    'Call Messaggio("elaborazione in corso estrazione n°:" & es)
    'Call AvanzamentoElab(Ini,Fin,es)
    'Next
    nEstr = ContaEstrazioni(Ini,Fin,r)
    nValore = Round(CicloTeorico(nCombinazione,nSorte,CInt(Ctr)),2)' ctr= 1 sta per 1 ruota, ctr = 10 per tutte
    freqTeorica = Round(Dividi(nEstr,nValore),2) 'numero di estrazioni esaminate / il proprio CicloTeorico
    aColonne = SviluppoIntegrale(nNumeri,nCombinazione) ' sviluppo i l'array dei numeri scelti ,nella combinazione scelta
    For k = 1 To UBound(aColonne) ' ciclo per leggere la colonna k della matrice aColonne
        s = "" ' dichiaro la stringa combinazione vuota
        For e = 1 To nCombinazione ' ciclo la combinazione selezionata
            s = s & Format2(aColonne(k,e)) & "." ' questa è la stringa di ritorno dei numeri combinati
            aNumeri(e) = aColonne(k,e) 'matrice dei numeri da analizzare
            Call StatisticaFormazioneTurbo(aNumeri,aRu,nSorte,ritardo,ritardomax,IncrRitMax,Frequenza,Ini,Fin)
            ' qui analizzo le frequenze con la funzione trova frequenze per mese
            Dim z,freqT
            ReDim nMese(12)
            TUTTI = 0
            For z = 1 To 12
                nMese(z) = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,z)
            Next
            For freqT = 1 To UBound(nMese)
                TUTTI = TUTTI + nMese(freqT)
            Next
            ' funzione per calcolare il ritardo globale della formazione
            ' questo è un espediente che ho dovuto analizzare visto la frequenza mese
            RitMese = TrovaRitardoMese(aNumeri,aRu,nSorte,Ini,Fin,"TUTTI")
            Scarto = Round(TUTTI - freqTeorica,2)
            ' richiamo la funzione elenca ritardi, per poter attingere alla marice che elenca i ritardi  voce:( aRetRitardi)
            Call ElencoRitardiTurbo(aNumeri,aRu,nSorte,Ini,Fin,aRetRitardi,aRetIdEstr)
            ' scritta funzione per calcolare il ritardo medio della formazione
            RitMed = RitardoMedio(aRetRitardi)
            ' scritta funzione per calcolo deviazione standard della funzione
            '
            DevStd = CalcolaDeviazioneStd(aRetRitardi)
            disCeb = Round(RitMed +(10*DevStd),2)
            ScaCeb = Round(disCeb - RitMese,2)
            '
        Next
        s = Left(s,Len(s) - 1) ' tolgo l'ultimo punto dalla stringa della formazione altrimenti sarebbe es : "12.22.33." anzichè : "12.22.33"
        'For es = Ini To Fin
        'Call AvanzamentoElab(1,UBound(aColonne),k)
        'Call Messaggio("Sto Elaborando la Combinazione :" & s)
        'Next
        ReDim aRisultato(23)
        aRisultato(1) = k ' id
        aRisultato(2) = s ' combinazioni analizzate
        aRisultato(3) = TUTTI'frequenza combinazione
        aRisultato(4) = Scarto ' differenza freq.reeale e differenza teorica
        aRisultato(5) = RitMese ' ritardo cronologico
        aRisultato(6) = RitMed ' ritardo medio
        aRisultato(7) = ritardomax ' ritardo storico
        aRisultato(8) = IncrRitMax ' incremento ritardo storico
        aRisultato(9) = DevStd ' deviazione standard
        aRisultato(10) = disCeb 'disegualianza di cebicev
        aRisultato(11) = ScaCeb ' scarto tra valore ipotizzato e valore del ritardo reale
        aRisultato(12) = nMese(1)'Gennaio ' frequenza per mese
        aRisultato(13) = nMese(2)'Febbraio'
        aRisultato(14) = nMese(3)'Marzo'
        aRisultato(15) = nMese(4)'Aprile
        aRisultato(16) = nMese(5)'Maggio
        aRisultato(17) = nMese(6)'Giugno
        aRisultato(18) = nMese(7)'Luglio
        aRisultato(19) = nMese(8)'Agosto
        aRisultato(20) = nMese(9)'Settembre
        aRisultato(21) = nMese(10)'Ottobre
        aRisultato(22) = nMese(11)'Novembre
        aRisultato(23) = nMese(12)'Dicembre
        Call AddRigaTabella(aRisultato,,,3,RGB(0,0,0),"Consolas")
        'se decidessi di ordinare il mese? legge il primo colore? No Legge l'ultima istruzione
        Call SetColoreCella(CInt(idOrd),RGB(221,255,230),2)
        Call SetColoreCella(Mese(EstrazioneFin) + 11,RGB(215,215,255),2)
    Next
    Scrivi "script By I Legend per lottoCed's amici"
    Scrivi
    Scrivi "Tabella Statistica per formazioni libere" & " ",1,,RGB(252,227,143),,5
    Scrivi
    Scrivi "Range Ricerca Estrazioni dal :{" & GetInfoEstrazione(Ini) & " } al : {" & DataEstrazione(Fin) & "}",1,,,,3
    Scrivi "Estrazioni Totali Analizzati :{" & nEstr & "}",1,,,,3
    Scrivi "Numeri di ricerca            :{" & StringaNumeri(nNumeri) & "}",1,,,,3
    Scrivi "Sviluppo numeri in           :{" & k - 1 & " " & NomeCombinazione(nCombinazione) & "}",1,,,,3
    Scrivi "Analesi combinazione per     :{" & NomeSorte(nSorte) & "}",1,,,,3
    Scrivi "Ciclo Teorico                :{" & nValore & "}",1,,,,3
    Scrivi "Frequenza Teorica            :{" & freqTeorica & "}",1,,,,3
    Scrivi "Ruota di ricerca             :{" & NomeRuota(aRu(1)) & "}",1,,,,3
    Scrivi "Ordinamento colonna num      :{" & aTitolo(idOrd) & "}",1,,,,3
    Scrivi "Ordino Colonna in modo       :{" & TipOrd & "}",1,,,,3
    Scrivi
    Call SetTableWidth("100%")
    Call CreaTabella(idOrd,TipOrd,0)
    If ScriptInterrotto Then Exit Sub
End Sub
' riporto qui di seguito tutte le funzioni utilizzate
' per la sub main
' ovviamente possono essere ottimizzate
Function TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,fin,nMese)
    Dim k
    Dim FreqMese
    For k = Ini To fin
        If Mese(k) = nMese Then
            Call ImpostaEstrazione(k,True)
        Else
            Call ImpostaEstrazione(k,False)
        End If
    Next
    For k = Ini To fin
        If nMese = "TUTTI" Then Call ImpostaEstrazione(k,True)
    Next
    FreqMese = SerieFreqTurbo(Ini,fin,aNumeri,aRu,nSorte)
    TrovaFrequenzaMese = FreqMese
End Function
Function TrovaRitardoMese(aNumeri,aRu,nSorte,Ini,fin,nMese)
    Dim k
    Dim RitMese
    For k = Ini To fin
        If Mese(k) = nMese Then
            Call ImpostaEstrazione(k,True)
        Else
            Call ImpostaEstrazione(k,False)
        End If
    Next
    For k = Ini To fin
        If nMese = "TUTTI" Then Call ImpostaEstrazione(k,True)
    Next
    RitMese = SerieRitardoTurbo(Ini,fin,aNumeri,aRu,nSorte)
    TrovaRitardoMese = RitMese
End Function
Function NomeCombinazione(a)
    Dim ris
    Select Case a
    Case 1
        ris = "Estratti"
    Case 2
        ris = "Ambi"
    Case 3
        ris = "Terzine"
    Case 4
        ris = "Quartine"
    Case 5
        ris = "Cinquine"
    End Select
    NomeCombinazione = ris
End Function
Function Ordinamento
    Dim Ord
    ReDim aTitolo(21)
    aTitolo(1) = "Freq" ' frequenza
    aTitolo(2) = "Scarto" ' differenza tra freq.reale e frequenza teorica
    aTitolo(3) = "Rit" ' ritardo cronologico attuale
    aTitolo(4) = "RitMed" ' ritardo medio combunazione
    aTitolo(5) = "RitSto"
    aTitolo(6) = "IncR.S"
    aTitolo(7) = "DevStd"
    aTitolo(8) = "DisCeb"
    aTitolo(9) = "ScaCeb"
    aTitolo(10) = "GEN" ' frequenza nel mese di....
    aTitolo(11) = "FEB"' frequenza nel mese di....
    aTitolo(12) = "MAR" ' /////
    aTitolo(13) = "APR" '////
    aTitolo(14) = "MAG" '////
    aTitolo(15) = "GIU"
    aTitolo(16) = "LUG"
    aTitolo(17) = "AGO"
    aTitolo(18) = "SET"
    aTitolo(19) = "OTT"
    aTitolo(20) = "NOV"
    aTitolo(21) = "DIC"
    Ord = ScegliOpzioneMenu(aTitolo,1,"Seleziona Ordinamento  per la colonna :") + 2
    Ordinamento = Ord
End Function
Function TipoOrdinamento
    Dim Ord
    ReDim atitolo(1)
    atitolo(0) = "Ascendente"
    atitolo(1) = "Discendente"
    Ord = ScegliOpzioneMenu(atitolo,0,"Seleziona Tipo di Ordinamento  :")
    If Ord = 0 Then Ord = - 1 : Else Ord = 1
    TipoOrdinamento = Ord
End Function
Function ScegliCombinazione
    Dim combinazione
    ReDim aVoci(5)
    aVoci(1) = "Estratti"
    aVoci(2) = "Ambi"
    aVoci(3) = "Terzine"
    aVoci(4) = "Quartine"
    aVoci(5) = "Cinquine"
    combinazione = ScegliOpzioneMenu(aVoci,1," Combina i numeri In :")
    ScegliCombinazione = CInt(combinazione)
End Function
Function SelEsito
    Dim Esito
    ReDim aVoci(5)
    aVoci(1) = "Estratto"
    aVoci(2) = "Ambo"
    aVoci(3) = "Terno"
    aVoci(4) = "Quaterna"
    aVoci(5) = "Cinquina"
    Esito = ScegliOpzioneMenu(aVoci,1," Analesi per Sorte di : ")
    SelEsito = CInt(Esito)
End Function
Function SelRuota
    Dim Ruota
    ReDim aVoci(12)
    aVoci(1) = "BARI"
    aVoci(2) = "CAGLIARI"
    aVoci(3) = "FIRENZE"
    aVoci(4) = "GENOVA"
    aVoci(5) = "MILANO"
    aVoci(6) = "NAPOLI"
    aVoci(7) = "PALERMO"
    aVoci(8) = "ROMA"
    aVoci(9) = "TORINO"
    aVoci(10) = "VENEZIA"
    aVoci(11) = "TUTTE"
    aVoci(12) = "NAZIONALE"
    Ruota = ScegliOpzioneMenu(aVoci,1," Analizza Ruota di : ")
    SelRuota = CInt(Ruota)
End Function
Function SelMese
    Dim Ruota
    ReDim aVoci(12)
    aVoci(1) = "GENNAIO"
    aVoci(2) = "FEBRAIO"
    aVoci(3) = "MARZO"
    aVoci(4) = "APRILE"
    aVoci(5) = "MAGGIO"
    aVoci(6) = "GIUGNO"
    aVoci(7) = "LUGLIO"
    aVoci(8) = "AGOSTO"
    aVoci(9) = "SETTEMBRE"
    aVoci(10) = "OTTOBRE"
    aVoci(11) = "NOVEMBRE"
    aVoci(12) = "DICEMBRE"
    Ruota = ScegliOpzioneMenu(aVoci,1," Analizza Mese di : ")
    SelMese = CInt(Ruota)
End Function
Function InizioArchivio
    Dim es,Inizio
    ReDim aVoci(EstrazioneFin)
    For es = 3914 To EstrazioneFin
        aVoci(es) = DataEstrazione(es)
    Next
    Inizio = ScegliOpzioneMenu(aVoci,3914,"Inserisci Data Inizio Analisi")
    InizioArchivio = Inizio
End Function
Function RitardoMedio(aRitardi())
    Dim k
    Dim nElementi
    Dim nMedia
    For k = 1 To UBound(aRitardi) - 1
        nElementi = nElementi + 1
        nMedia = nMedia + aRitardi(k)
    Next
    nMedia = Round(Dividi(nMedia,nElementi),2)
    RitardoMedio = nMedia
End Function
Function CalcolaDeviazioneStd(aRitardi())
    Dim k
    Dim somRit,nMedia,nElementi,nVarianza,nSomSQVar
    For k = 1 To UBound(aRitardi) - 1
        nElementi = nElementi + 1
        somRit = somRit + aRitardi(k)
    Next
    nMedia = Round(Dividi(somRit,nElementi))
    For k = 1 To UBound(aRitardi) - 1
        nSomSQVar = nSomSQVar +((nMedia - aRitardi(k)) ^ 2)
        nVarianza = Round(Dividi(nSomSQVar,nElementi),2)
    Next
    CalcolaDeviazioneStd = Round(Sqr(nVarianza),2)
End Function
Function ContaEstrazioni(Ini,Fin,r)
    Dim Conta,es
    For es = Ini To Fin
        If SommaEstratti(es,r) >= 15 Then Conta = Conta + 1
    Next
    ContaEstrazioni = Conta
End Function

Ho attacco il ciclo frequenze
mi raccomando altri suggerimenti:o

Ciao
 
buona giornata a tutti:
Ho ripulito un po il codice
credo sia più veloce, ma sicuramente si può migliorare e velocizzare
rimangono i tre bag :
dell'inizio ricerca
e dell'antiestetico spazio vuoto della casella di scelta
dell'intestazione della tabella nel caso ascendente
Codice:
Option Explicit
' Lo script si è arricchito un po alla volta quindi si è rallentato nella sua esecuzione
' l'utilizzo è una semplice  ricerca statistica delle combinazioni scelte
' possiamo trovare la frequenza globale della formazione e allo stesso tempo vedere la frequenza mese per mese
' il ritardo cronologico,il ritardo medio,il ritardo storico,e l'incremento del medesimo
' il calcolo effettuato e l'output parrebbe essere  corretto , ma consiglio sempre di verificare con altre fonti , per eliminare o segnalare
'eventuali errori sempre possibili vista l'inesperienza.
' lo script non restituisce  (e non vuole farlo)  previsioni
' script by  I legend per  gli amici di lottoced
'Ringraziamenti :
' senza gli esempi di Mike , di Claudio, di LuigiB, e le *importantissime* Lezioni/spiegazioni di Joe
' non sarei riuscito a scrivere una solo riga
' Purtoppo l'ordina matrice non funziona, le form di scelta sono pronte ma non so come posso utilizzarle
' Se qualcuno vuole ottimizzare lo script  o indicarmi dove ottimizzare sarei davvero grato
'Buono studio  e divertimento a tutti
Sub Main
    Dim Ini,Fin,nEstr,es,k,x,r,nValore,idOrd,TipOrd,Ctr
            Dim DevStd,disCeb,ScaCeb
    Dim s,e,ritardo,ritardomax,IncrRitMax,RitMed,RitMese
            Dim Frequenza,freqTeorica,FreqMese,freq,FreqTot,Scarto
    Dim nNumeri,aColonne
    Dim aNumeri(90)
    Dim aRu(1)
    Dim nCombinazione,nSorte,nCiclo
    ReDim aRetRitardi(0)
    ReDim aRetIdEstr(0)
    Ini = InizioArchivio ' funzione inizio data archivio
    Fin = EstrazioneFin
    
    Call ScegliNumeri(nNumeri)
    nCombinazione = ScegliCombinazione
    nSorte = CInt(SelEsito)
    r = SelRuota ' funziona per selezionare la ruota  statistica su tutte o solo per una ruota
    aRu(1) = r
    If r = 11 Then Ctr = 10: Else Ctr = 1 ' valore utilizzato per calcolo del ciclo teorico
    idOrd = Ordinamento ' seleziono la colonna che voglio ordinare
    TipOrd = TipoOrdinamento ' Crescente o decrescente
    
    'Imposto i titoli delle colonne della tabella statistica
    '
    ReDim aTitolo(23)
    aTitolo(1) = "ID" ' Numero di combinazione
    aTitolo(2) = "Comb." '  combinazioni ottenute
    aTitolo(3) = "Freq" ' frequenza
    aTitolo(4) = "Scarto" ' differenza tra freq.reale e frequenza teorica
    aTitolo(5) = "Rit" ' ritardo cronologico attuale
    aTitolo(6) = "RitMed" ' ritardo medio combunazione
    aTitolo(7) = "RitSto"
    aTitolo(8) = "IncR.S"
    aTitolo(9) = "DevStd"
    aTitolo(10) = "DisCeb"
    aTitolo(11) = "ScaCeb96%"
    aTitolo(12) = "GEN" ' frequenza nel mese di....
    aTitolo(13) = "FEB"' frequenza nel mese di....
    aTitolo(14) = "MAR" ' /////
    aTitolo(15) = "APR" '////
    aTitolo(16) = "MAG" '////
    aTitolo(17) = "GIU"
    aTitolo(18) = "LUG"
    aTitolo(19) = "AGO"
    aTitolo(20) = "SET"
    aTitolo(21) = "OTT"
    aTitolo(22) = "NOV"
    aTitolo(23) = "DIC"
    ' inizializzo la tabella '''la prima riga
    InitTabella aTitolo,RGB(108,194,243),,3,RGB(255,255,255),"Consolas"
    'conto le estrazioni utili 
    nEstr = ContaEstrazioni(Ini,Fin,r)
    nValore = Round(CicloTeorico(nCombinazione,nSorte,CInt(Ctr)),2)' ctr= 1 (=1R);=10(=TT)
    freqTeorica = Round(Dividi(nEstr,nValore),2) 
    aColonne = SviluppoIntegrale(nNumeri,nCombinazione) ' sviluppo i l'array dei numeri scelti ,nella combinazione scelta
    For k = 1 To UBound(aColonne) ' ciclo per leggere la colonna k della matrice aColonne
        s = "" ' dichiaro la stringa combinazione vuota
        For e = 1 To nCombinazione ' ciclo la combinazione selezionata
            s = s & Format2(aColonne(k,e)) & "." ' questa è la stringa di ritorno dei numeri combinati
            aNumeri(e) = aColonne(k,e) 'matrice dei numeri da analizzare
            Call StatisticaFormazioneTurbo(aNumeri,aRu,nSorte,ritardo,ritardomax,IncrRitMax,Frequenza,Ini,Fin)
            ' qui analizzo le frequenze con la funzione trova frequenze per mese
            Dim z
            ReDim nMese(12)
            FreqTot = 0
            For z = 1 To 12
                nMese(z) = TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,Fin,z)
            Next
            For x = 1 To UBound(nMese)
                FreqTot = FreqTot + nMese(x)
            Next
            ' funzione per calcolare il ritardo globale della formazione
            ' questo è un espediente che ho dovuto analizzare visto la frequenza mese
            RitMese = TrovaRitardoMese(aNumeri,aRu,nSorte,Ini,Fin,"TUTTI")
            Scarto = Round(FreqTot - freqTeorica,2)
            ' richiamo la funzione elenca ritardi, per poter attingere alla marice che elenca i ritardi  voce:( aRetRitardi)
            Call ElencoRitardiTurbo(aNumeri,aRu,nSorte,Ini,Fin,aRetRitardi,aRetIdEstr)
            ' scritta funzione per calcolare il ritardo medio della formazione
            RitMed = RitardoMedio(aRetRitardi)
            ' scritta funzione per calcolo deviazione standard della funzione
            '
            DevStd = CalcolaDeviazioneStd(aRetRitardi)
            disCeb = Round(RitMed +(10*DevStd),2)
            ScaCeb = Round(disCeb - RitMese,2)
            '
        Next
        s = Left(s,Len(s) - 1) ' tolgo l'ultimo punto dalla stringa della formazione altrimenti sarebbe es : "12.22.33." anzichè : "12.22.33"
        'For es = Ini To Fin
        'Call AvanzamentoElab(1,UBound(aColonne),k)
        'Call Messaggio("Sto Elaborando la Combinazione :" & s)
        'Next
        ReDim aRisultato(23)
        aRisultato(1) = k ' id
        aRisultato(2) = s ' combinazioni analizzate
        aRisultato(3) = FreqTot'frequenza combinazione
        aRisultato(4) = Scarto ' differenza freq.reeale e differenza teorica
        aRisultato(5) = RitMese ' ritardo cronologico
        aRisultato(6) = RitMed ' ritardo medio
        aRisultato(7) = ritardomax ' ritardo storico
        aRisultato(8) = IncrRitMax ' incremento ritardo storico
        aRisultato(9) = DevStd ' deviazione standard
        aRisultato(10) = disCeb 'disegualianza di cebicev
        aRisultato(11) = ScaCeb ' scarto tra valore ipotizzato e valore del ritardo reale
        aRisultato(12) = nMese(1)'Gennaio ' frequenza per mese
        aRisultato(13) = nMese(2)'Febbraio'
        aRisultato(14) = nMese(3)'Marzo'
        aRisultato(15) = nMese(4)'Aprile
        aRisultato(16) = nMese(5)'Maggio
        aRisultato(17) = nMese(6)'Giugno
        aRisultato(18) = nMese(7)'Luglio
        aRisultato(19) = nMese(8)'Agosto
        aRisultato(20) = nMese(9)'Settembre
        aRisultato(21) = nMese(10)'Ottobre
        aRisultato(22) = nMese(11)'Novembre
        aRisultato(23) = nMese(12)'Dicembre
        Call AddRigaTabella(aRisultato,,,3,RGB(0,0,0),"Consolas")
        'se decidessi di ordinare il mese? legge il primo colore? No Legge l'ultima istruzione
        Call SetColoreCella(CInt(idOrd),RGB(221,255,230),2)
        Call SetColoreCella(Mese(EstrazioneFin) + 11,RGB(215,215,255),2)
    Next
    Scrivi FormatSpace ("script By I Legend per lottoCed's amici",150,-1)
    Scrivi
    Scrivi "Tabella Statistica per formazioni libere" & " ",1,,RGB(252,227,143),,5
    Scrivi
    Scrivi "Range Ricerca Estrazioni dal :{" & GetInfoEstrazione(Ini) & " } al : {" & DataEstrazione(Fin) & "}",1,,,,3
    Scrivi "Estrazioni Totali Analizzati :{" & nEstr & "}",1,,,,3
    Scrivi "Numeri di ricerca            :{" & StringaNumeri(nNumeri) & "}",1,,,,3
    Scrivi "Sviluppo numeri in           :{" & k - 1 & " " & NomeCombinazione(nCombinazione) & "}",1,,,,3
    Scrivi "Analesi combinazione per     :{" & NomeSorte(nSorte) & "}",1,,,,3
    Scrivi "Ciclo Teorico                :{" & nValore & "}",1,,,,3
    Scrivi "Frequenza Teorica            :{" & freqTeorica & "}",1,,,,3
    Scrivi "Ruota di ricerca             :{" & NomeRuota(aRu(1)) & "}",1,,,,3
    Scrivi "Ordinamento colonna num      :{" & aTitolo(idOrd) & "}",1,,,,3
    Scrivi "Ordino Colonna in modo       :{" & TipOrd & "}",1,,,,3
    Scrivi
    Call SetTableWidth("100%")
    Call CreaTabella(idOrd,TipOrd,0)
    If ScriptInterrotto Then Exit Sub
End Sub
' riporto qui di seguito tutte le funzioni utilizzate
' per la sub main
' ovviamente possono essere ottimizzate
Function TrovaFrequenzaMese(aNumeri,aRu,nSorte,Ini,fin,nMese)
    Dim k
    Dim FreqMese
    For k = Ini To fin
        If Mese(k) = nMese Then
            Call ImpostaEstrazione(k,True)
        Else
            Call ImpostaEstrazione(k,False)
        End If
    Next
    
    FreqMese = SerieFreqTurbo(Ini,fin,aNumeri,aRu,nSorte)
    TrovaFrequenzaMese = FreqMese
End Function
Function TrovaRitardoMese(aNumeri,aRu,nSorte,Ini,fin,nMese)
    Dim k
    Dim RitMese
    For k = Ini To fin
        If Mese(k) = nMese Then
            Call ImpostaEstrazione(k,True)
        Else
            Call ImpostaEstrazione(k,False)
        End If
    Next
    For k = Ini To fin
        If nMese = "TUTTI" Then Call ImpostaEstrazione(k,True)
    Next
    RitMese = SerieRitardoTurbo(Ini,fin,aNumeri,aRu,nSorte)
    TrovaRitardoMese = RitMese
End Function
Function NomeCombinazione(a)
    Dim ris
    Select Case a
    Case 1
        ris = "Estratti"
    Case 2
        ris = "Ambi"
    Case 3
        ris = "Terzine"
    Case 4
        ris = "Quartine"
    Case 5
        ris = "Cinquine"
    End Select
    NomeCombinazione = ris
End Function
Function Ordinamento
    Dim Ord
    ReDim aTitolo(21)
    aTitolo(1) = "Freq" ' frequenza
    aTitolo(2) = "Scarto" ' differenza tra freq.reale e frequenza teorica
    aTitolo(3) = "Rit" ' ritardo cronologico attuale
    aTitolo(4) = "RitMed" ' ritardo medio combunazione
    aTitolo(5) = "RitSto"
    aTitolo(6) = "IncR.S"
    aTitolo(7) = "DevStd"
    aTitolo(8) = "DisCeb"
    aTitolo(9) = "ScaCeb"
    aTitolo(10) = "GEN" ' frequenza nel mese di....
    aTitolo(11) = "FEB"' frequenza nel mese di....
    aTitolo(12) = "MAR" ' /////
    aTitolo(13) = "APR" '////
    aTitolo(14) = "MAG" '////
    aTitolo(15) = "GIU"
    aTitolo(16) = "LUG"
    aTitolo(17) = "AGO"
    aTitolo(18) = "SET"
    aTitolo(19) = "OTT"
    aTitolo(20) = "NOV"
    aTitolo(21) = "DIC"
    Ord = ScegliOpzioneMenu(aTitolo,1,"Seleziona Ordinamento  per la colonna :") + 2
    Ordinamento = Ord
End Function
Function TipoOrdinamento
    Dim Ord
    ReDim atitolo(1)
    atitolo(0) = "Ascendente"
    atitolo(1) = "Discendente"
    Ord = ScegliOpzioneMenu(atitolo,0,"Seleziona Tipo di Ordinamento  :")
    If Ord = 0 Then Ord = - 1 : Else Ord = 1
    TipoOrdinamento = Ord
End Function
Function ScegliCombinazione
    Dim combinazione
    ReDim aVoci(5)
    aVoci(1) = "Estratti"
    aVoci(2) = "Ambi"
    aVoci(3) = "Terzine"
    aVoci(4) = "Quartine"
    aVoci(5) = "Cinquine"
    combinazione = ScegliOpzioneMenu(aVoci,3," Combina i numeri In :")
    ScegliCombinazione = CInt(combinazione)
End Function
Function SelEsito
    Dim Esito
    ReDim aVoci(5)
    aVoci(1) = "Estratto"
    aVoci(2) = "Ambo"
    aVoci(3) = "Terno"
    aVoci(4) = "Quaterna"
    aVoci(5) = "Cinquina"
    Esito = ScegliOpzioneMenu(aVoci,2," Analesi per Sorte di : ")
    SelEsito = CInt(Esito)
End Function
Function SelRuota
    Dim Ruota
    ReDim aVoci(12)
    aVoci(1) = "BARI"
    aVoci(2) = "CAGLIARI"
    aVoci(3) = "FIRENZE"
    aVoci(4) = "GENOVA"
    aVoci(5) = "MILANO"
    aVoci(6) = "NAPOLI"
    aVoci(7) = "PALERMO"
    aVoci(8) = "ROMA"
    aVoci(9) = "TORINO"
    aVoci(10) = "VENEZIA"
    aVoci(11) = "TUTTE"
    aVoci(12) = "NAZIONALE"
    Ruota = ScegliOpzioneMenu(aVoci,1," Analizza Ruota di : ")
    SelRuota = CInt(Ruota)
End Function
Function SelMese
    Dim Ruota
    ReDim aVoci(12)
    aVoci(1) = "GENNAIO"
    aVoci(2) = "FEBRAIO"
    aVoci(3) = "MARZO"
    aVoci(4) = "APRILE"
    aVoci(5) = "MAGGIO"
    aVoci(6) = "GIUGNO"
    aVoci(7) = "LUGLIO"
    aVoci(8) = "AGOSTO"
    aVoci(9) = "SETTEMBRE"
    aVoci(10) = "OTTOBRE"
    aVoci(11) = "NOVEMBRE"
    aVoci(12) = "DICEMBRE"
    Ruota = ScegliOpzioneMenu(aVoci,1," Analizza Mese di : ")
    SelMese = CInt(Ruota)
End Function
Function InizioArchivio
    Dim es,Inizio
    ReDim aVoci(EstrazioneFin)
    For es = 3914 To EstrazioneFin
        aVoci(es) = DataEstrazione(es)
    Next
    Inizio = ScegliOpzioneMenu(aVoci,3914,"Inserisci Data Inizio Analisi")
    InizioArchivio = Inizio
End Function
Function RitardoMedio(aRitardi())
    Dim k
    Dim nElementi
    Dim nMedia
    For k = 1 To UBound(aRitardi) - 1
        nElementi = nElementi + 1
        nMedia = nMedia + aRitardi(k)
    Next
    nMedia = Round(Dividi(nMedia,nElementi),2)
    RitardoMedio = nMedia
End Function
Function CalcolaDeviazioneStd(aRitardi())
    Dim k
    Dim somRit,nMedia,nElementi,nVarianza,nSomSQVar
    For k = 1 To UBound(aRitardi) - 1
        nElementi = nElementi + 1
        somRit = somRit + aRitardi(k)
    Next
    nMedia = Round(Dividi(somRit,nElementi))
    For k = 1 To UBound(aRitardi) - 1
        nSomSQVar = nSomSQVar +((nMedia - aRitardi(k)) ^ 2)
        nVarianza = Round(Dividi(nSomSQVar,nElementi),2)
    Next
    CalcolaDeviazioneStd = Round(Sqr(nVarianza),2)
End Function
Function ContaEstrazioni(Ini,Fin,r)
    Dim Conta,es
    For es = Ini To Fin
        If SommaEstratti(es,r) >= 15 Then Conta = Conta + 1
    Next
    ContaEstrazioni = Conta
End Function


Grazie Fillotto mi fa piacere che tu abbia apprezzato e trovato utile questa ricerca
 
Ultima modifica:
Per me la cosa più importante è scrivere e utilizzare le funzioni in modo corretto,
inserire i cicli nella parte corretta del codice, ad esempio dove è più conveniente inserire messaggio e avanzamento elab? ed inoltre
scrripInterrotto perchè funzioni?
dovrebbe essere
if scriptInterrotto then exit for all'interno di un ciclo for
exit do all' interno di un ciclo do while o until
non fare come nel primo script le funzioni una ad una quando si puo fare un ciclo for...
Insomma ho bisogno del vostro aiuto per imparare a scrivere correttamente ed elegantemente
e vi ringrazio moltissimo per l'aiuto che mi state dando
Grazie mille amici:-)
 
If nCombinazione<nSorte Then MsgBox "hai inserito Un Valore errato riscrivi ": nSorte = CInt(SelEsito)
questa riga potrebbe tornare utile nel caso di un inserimento errato dei valori
se inseriamo una terzina non possiamo cercare una quaterna , cosi gestiamo lo script senza dover uscire.
altre idee vediamo se vengono:-)
 

Ultima estrazione Lotto

  • Estrazione del lotto
    martedì 21 gennaio 2025
    Bari
    78
    09
    70
    03
    23
    Cagliari
    32
    88
    30
    13
    45
    Firenze
    87
    23
    15
    39
    86
    Genova
    71
    48
    67
    59
    23
    Milano
    58
    50
    80
    85
    29
    Napoli
    90
    81
    79
    82
    62
    Palermo
    70
    33
    90
    05
    10
    Roma
    15
    71
    55
    85
    76
    Torino
    89
    09
    18
    33
    69
    Venezia
    44
    80
    82
    73
    58
    Nazionale
    80
    25
    13
    63
    17
    Estrazione Simbolotto
    Bari
    39
    36
    34
    14
    31
Indietro
Alto