Novità

Vi svelerò...

Allora caro l'AI Qwen 3_8 max Free Edition te l'ha fatto al volo e sembra funzioni.. :) L'unica differenza con quello python è la velocità e il fatto che non calcola tutte le ruote in sequenza ma solo una alla volta e solo se gli cambi il relativo numero ruota dove spiegato nel codice. Chiarisco che come l'altro script non ha carattere predittivo ma solo di analisi per confutare o meno a livello statistico l'importanza delle 20 famiglie in oggetto. 👋:)

Codice:
' LOTTO AVENGERS 2026 - BACKTEST TAVOLA SETTENARIA (SpazioScript v1.3)
' Novita': ruota configurabile in UN solo punto + report con nome ruota

Dim Famiglie(20, 12)
Dim FamiglieLunghezza(20)
Dim FamiglieID(20)
Dim NumeriVisitati(90)
Dim NumFamiglie

' >>> VARIABILI RUOTA (globali, le legge anche il report) <<<
Dim CodiceRuota
Dim sNomeRuota

Sub Main()
    ' ============================================================
    ' >>> CAMBIA QUI LA RUOTA DA ANALIZZARE <<<
    ' Codici: 1=Bari, 2=Cagliari, 3=Firenze, 4=Genova, 5=Milano,
    '         6=Napoli, 7=Palermo, 8=Roma, 9=Torino, 10=Venezia,
    '         12=Nazionale
    ' ============================================================
    CodiceRuota = 1
    sNomeRuota = NomeRuota(1)  
    GeneraFamiglie()
    EseguiBacktest()
End Sub

Sub GeneraFamiglie()
    Dim i, n, j, Current, Lunghezza
  
    For i = 1 To 90
        NumeriVisitati(i) = 0
    Next
  
    NumFamiglie = 0
  
    For n = 1 To 90
        If NumeriVisitati(n) = 0 Then
            NumFamiglie = NumFamiglie + 1
            Current = n
            Lunghezza = 0
          
            Do
                NumeriVisitati(Current) = 1
                Lunghezza = Lunghezza + 1
                Famiglie(NumFamiglie, Lunghezza) = Current
              
                Current = (Current * 7) Mod 90
                If Current = 0 Then
                    Current = 90
                End If
            Loop While NumeriVisitati(Current) = 0
          
            FamiglieLunghezza(NumFamiglie) = Lunghezza
            FamiglieID(NumFamiglie) = n
        End If
    Next
  
    Scrivi "Generate " & NumFamiglie & " famiglie settenarie uniche."
End Sub

Function Comb(n, k)
    Dim i, result
    If k < 0 Or k > n Then
        Comb = 0
        Exit Function
    End If
    If k = 0 Or k = n Then
        Comb = 1
        Exit Function
    End If
    If k > n - k Then
        k = n - k
    End If
  
    result = 1
    For i = 0 To k - 1
        result = result * (n - i) / (i + 1)
    Next
  
    Comb = result
End Function

Function ProbAlmeno2In1Estrazione(nGiocati)
    Dim totale, p_zero, p_uno
    If nGiocati < 2 Then
        ProbAlmeno2In1Estrazione = 0
        Exit Function
    End If
  
    totale = Comb(90, 5)
    p_zero = Comb(nGiocati, 0) * Comb(90 - nGiocati, 5) / totale
    p_uno = Comb(nGiocati, 1) * Comb(90 - nGiocati, 4) / totale
  
    ProbAlmeno2In1Estrazione = 1 - p_zero - p_uno
End Function

Function ProbAlmeno1In3Estrazioni()
    ProbAlmeno1In3Estrazioni = 1 - (85/90)^3
End Function

Function ProbAmbo2NumeriIn3Estrazioni()
    Dim p_ambo_1
    p_ambo_1 = Comb(2, 2) * Comb(88, 3) / Comb(90, 5)
    ProbAmbo2NumeriIn3Estrazioni = 1 - (1 - p_ambo_1)^3
End Function

Function ZScore(pEmpirica, pTeorica, nCampioni)
    Dim std_dev
    If nCampioni = 0 Then
        ZScore = 0
        Exit Function
    End If
  
    std_dev = Sqr(pTeorica * (1 - pTeorica) / nCampioni)
    If std_dev = 0 Then
        ZScore = 0
        Exit Function
    End If
  
    ZScore = (pEmpirica - pTeorica) / std_dev
End Function

Sub EseguiBacktest()
    Dim Attivazioni(20), TestA_Successi(20), TestB_Successi(20)
    Dim TestC_Successi(20), TestD_CoppieTotali(20), TestD_CoppieVincenti(20)
    Dim TestC_Count(20), TestD_Count(20)
    Dim i, f, j, k, a, b, c1, c2, m
    Dim NumEstrazioni, EstrazioneCorrente(5), EstrazioneFutura(5)
    Dim Lunghezza, NumeriPresenti, Trovato, NMancanti, Mancanti(12)
    Dim TestA_OK, TestB_OK, TestC_OK, Colpiti
    Dim PrimoTrovato, SecondoTrovato, PrimoIn, SecondoIn
    Dim temp, probC, idx
  
    For i = 1 To 20
        Attivazioni(i) = 0
        TestA_Successi(i) = 0
        TestB_Successi(i) = 0
        TestC_Successi(i) = 0
        TestD_CoppieTotali(i) = 0
        TestD_CoppieVincenti(i) = 0
        TestC_Count(i) = 0
        TestD_Count(i) = 0
    Next
  
    On Error Resume Next
    NumEstrazioni = EstrazioniArchivio
    If Err.Number <> 0 Then
        NumEstrazioni = 1000
    End If
    On Error GoTo 0
  
    Scrivi "================================================================="
    Scrivi "RUOTA ANALIZZATA: " & sNomeRuota & " (codice " & CodiceRuota & ")"
    Scrivi "================================================================="
    Scrivi "Inizio backtest su " & NumEstrazioni & " estrazioni..."
  
    For i = 1 To NumEstrazioni - 3
        ' Estrazione corrente: usa CodiceRuota (prima era il fisso 1)
        On Error Resume Next
        For k = 1 To 5
            EstrazioneCorrente(k) = Estratto(i, k, CodiceRuota)
        Next
        If Err.Number <> 0 Then
            Exit Sub
        End If
        On Error GoTo 0
      
        For f = 1 To NumFamiglie
            Lunghezza = FamiglieLunghezza(f)
            NumeriPresenti = 0
          
            For j = 1 To Lunghezza
                For k = 1 To 5
                    If Famiglie(f, j) = EstrazioneCorrente(k) Then
                        NumeriPresenti = NumeriPresenti + 1
                    End If
                Next
            Next
          
            If NumeriPresenti >= 2 Then
                Attivazioni(f) = Attivazioni(f) + 1
              
                NMancanti = 0
                For j = 1 To Lunghezza
                    Trovato = 0
                    For k = 1 To 5
                        If Famiglie(f, j) = EstrazioneCorrente(k) Then
                            Trovato = 1
                        End If
                    Next
                    If Trovato = 0 Then
                        NMancanti = NMancanti + 1
                        If NMancanti <= 12 Then
                            Mancanti(NMancanti) = Famiglie(f, j)
                        End If
                    End If
                Next
              
                ' Bubble sort semplice
                For a = 1 To NMancanti - 1
                    For b = 1 To NMancanti - a
                        If b + 1 <= NMancanti Then
                            If Mancanti(b) > Mancanti(b + 1) Then
                                temp = Mancanti(b)
                                Mancanti(b) = Mancanti(b + 1)
                                Mancanti(b + 1) = temp
                            End If
                        End If
                    Next
                Next
              
                TestA_OK = 0
                TestB_OK = 0
                TestC_OK = 0
              
                If NMancanti >= 2 Then
                    For c1 = 1 To NMancanti - 1
                        For c2 = c1 + 1 To NMancanti
                            TestD_CoppieTotali(f) = TestD_CoppieTotali(f) + 1
                        Next
                    Next
                End If
              
                For j = 1 To 3
                    ' Estrazione futura: usa CodiceRuota (prima era il fisso 1)
                    On Error Resume Next
                    For k = 1 To 5
                        EstrazioneFutura(k) = Estratto(i + j, k, CodiceRuota)
                    Next
                    On Error GoTo 0
                  
                    Colpiti = 0
                    For m = 1 To NMancanti
                        For k = 1 To 5
                            If Mancanti(m) = EstrazioneFutura(k) Then
                                Colpiti = Colpiti + 1
                            End If
                        Next
                    Next
                  
                    If TestA_OK = 0 And NMancanti > 0 Then
                        For k = 1 To 5
                            If Mancanti(1) = EstrazioneFutura(k) Then
                                TestA_OK = 1
                            End If
                        Next
                    End If
                  
                    If TestB_OK = 0 And NMancanti >= 2 Then
                        PrimoTrovato = 0
                        SecondoTrovato = 0
                        For k = 1 To 5
                            If Mancanti(1) = EstrazioneFutura(k) Then
                                PrimoTrovato = 1
                            End If
                            If Mancanti(2) = EstrazioneFutura(k) Then
                                SecondoTrovato = 1
                            End If
                        Next
                        If PrimoTrovato = 1 And SecondoTrovato = 1 Then
                            TestB_OK = 1
                        End If
                    End If
                  
                    If TestC_OK = 0 And Colpiti >= 2 Then
                        TestC_OK = 1
                    End If
                  
                    If NMancanti >= 2 Then
                        idxD = 0
                        For c1 = 1 To NMancanti - 1
                            For c2 = c1 + 1 To NMancanti
                                idxD = idxD + 1
                                PrimoIn = 0
                                SecondoIn = 0
                                For k = 1 To 5
                                    If Mancanti(c1) = EstrazioneFutura(k) Then
                                        PrimoIn = 1
                                    End If
                                    If Mancanti(c2) = EstrazioneFutura(k) Then
                                        SecondoIn = 1
                                    End If
                                Next
                                If PrimoIn = 1 And SecondoIn = 1 Then
                                    TestD_CoppieVincenti(f) = TestD_CoppieVincenti(f) + 1
                                End If
                            Next
                        Next
                    End If
                Next
              
                If TestA_OK = 1 Then
                    TestA_Successi(f) = TestA_Successi(f) + 1
                End If
                If TestB_OK = 1 Then
                    TestB_Successi(f) = TestB_Successi(f) + 1
                End If
                If TestC_OK = 1 Then
                    TestC_Successi(f) = TestC_Successi(f) + 1
                End If
              
                If NMancanti >= 2 Then
                    probC = 1 - (1 - ProbAlmeno2In1Estrazione(NMancanti))^3
                    TestC_Count(f) = TestC_Count(f) + 1
                End If
            End If
        Next
      
        ' Progresso ogni 1000 estrazioni
        If i Mod 1000 = 0 Then
            Scrivi "Elaborate " & i & " estrazioni..."
        End If
    Next
  
    ' Stampa risultati
    Dim pTeorica_1num, pTeorica_ambo
    pTeorica_1num = ProbAlmeno1In3Estrazioni()
    pTeorica_ambo = ProbAmbo2NumeriIn3Estrazioni()
  
    Scrivi "================================================================="
    Scrivi "BACKTEST TAVOLA SETTENARIA - RISULTATI"
    Scrivi "RUOTA: " & sNomeRuota & " (codice " & CodiceRuota & ")"
    Scrivi "================================================================="
    Scrivi "Baselines teoriche:"
    Scrivi "  TEST A (1 numero secco): " & FormatNumber(pTeorica_1num * 100, 2) & "%"
    Scrivi "  TEST B (ambo 2 numeri): " & FormatNumber(pTeorica_ambo * 100, 3) & "%"
    Scrivi "================================================================="
    Scrivi ""
  
    Dim TotAttivazioni, TotA, TotB, TotC, TotD_Coppie, TotD_Vin
    TotAttivazioni = 0
    TotA = 0
    TotB = 0
    TotC = 0
    TotD_Coppie = 0
    TotD_Vin = 0
  
    For f = 1 To NumFamiglie
        Dim att, pA, zA, pB, zB, pC, pD
        att = Attivazioni(f)
        If att > 0 Then
            pA = TestA_Successi(f) / att
            zA = ZScore(pA, pTeorica_1num, att)
          
            pB = TestB_Successi(f) / att
            zB = ZScore(pB, pTeorica_ambo, att)
          
            pC = TestC_Successi(f) / att
          
            pD = 0
            If TestD_CoppieTotali(f) > 0 Then
                pD = TestD_CoppieVincenti(f) / TestD_CoppieTotali(f)
            End If
          
            Scrivi "Famiglia_" & FamiglieID(f) & " | Attiv: " & att & " | A: " & FormatNumber(pA * 100, 2) & "% (z:" & FormatNumber(zA, 2) & ") | B: " & FormatNumber(pB * 100, 3) & "% (z:" & FormatNumber(zB, 2) & ")"
          
            TotAttivazioni = TotAttivazioni + att
            TotA = TotA + TestA_Successi(f)
            TotB = TotB + TestB_Successi(f)
            TotC = TotC + TestC_Successi(f)
            TotD_Coppie = TotD_Coppie + TestD_CoppieTotali(f)
            TotD_Vin = TotD_Vin + TestD_CoppieVincenti(f)
        End If
    Next
  
    Scrivi "================================================================="
    Scrivi "TOTALI GLOBALI - RUOTA " & UCase(sNomeRuota)
    Scrivi "================================================================="
    Scrivi "Attivazioni totali: " & TotAttivazioni
    Scrivi "Coppie testate: " & TotD_Coppie
    Scrivi ""
  
    If TotAttivazioni > 0 Then
        Dim pA_Tot, zA_Tot, pB_Tot, zB_Tot, pC_Tot, pD_Tot
        pA_Tot = TotA / TotAttivazioni
        zA_Tot = ZScore(pA_Tot, pTeorica_1num, TotAttivazioni)
      
        pB_Tot = TotB / TotAttivazioni
        zB_Tot = ZScore(pB_Tot, pTeorica_ambo, TotAttivazioni)
      
        pC_Tot = TotC / TotAttivazioni
      
        pD_Tot = 0
        If TotD_Coppie > 0 Then
            pD_Tot = TotD_Vin / TotD_Coppie
        End If
      
        Scrivi "TEST A: Empirico " & FormatNumber(pA_Tot * 100, 2) & "% | Teorico " & FormatNumber(pTeorica_1num * 100, 2) & "% | z-score: " & FormatNumber(zA_Tot, 2)
        Scrivi "TEST B: Empirico " & FormatNumber(pB_Tot * 100, 3) & "% | Teorico " & FormatNumber(pTeorica_ambo * 100, 3) & "% | z-score: " & FormatNumber(zB_Tot, 2)
        Scrivi "TEST C: Empirico " & FormatNumber(pC_Tot * 100, 2) & "%"
        Scrivi "TEST D: Empirico " & FormatNumber(pD_Tot * 100, 3) & "%"
    End If
    Scrivi "================================================================="
    Scrivi "Backtest completato per " & sNomeRuota & "!"
End Sub

Ti lascio anche l'output di esempio calcolato su BARI.

Codice:
Generate 20 famiglie settenarie uniche.
=================================================================
RUOTA ANALIZZATA: Bari (codice 1)
=================================================================
Inizio backtest su 10915 estrazioni...
Elaborate 1000 estrazioni...
Elaborate 2000 estrazioni...
Elaborate 3000 estrazioni...
Elaborate 4000 estrazioni...
Elaborate 5000 estrazioni...
Elaborate 6000 estrazioni...
Elaborate 7000 estrazioni...
Elaborate 8000 estrazioni...
Elaborate 9000 estrazioni...
Elaborate 10000 estrazioni...
=================================================================
BACKTEST TAVOLA SETTENARIA - RISULTATI
RUOTA: Bari (codice 1)
=================================================================
Baselines teoriche:
  TEST A (1 numero secco): 15.76%
  TEST B (ambo 2 numeri): 0.747%
=================================================================

Famiglia_1 | Attiv: 1210 | A: 15.62% (z:-0.13) | B: 0.413% (z:-1.35)
Famiglia_2 | Attiv: 1152 | A: 14.76% (z:-0.93) | B: 0.347% (z:-1.58)
Famiglia_3 | Attiv: 152 | A: 16.45% (z:0.23) | B: 1.316% (z:0.81)
Famiglia_4 | Attiv: 1100 | A: 12.82% (z:-2.68) | B: 0.455% (z:-1.13)
Famiglia_5 | Attiv: 93 | A: 16.13% (z:0.10) | B: 0.000% (z:-0.84)
Famiglia_6 | Attiv: 139 | A: 12.95% (z:-0.91) | B: 1.439% (z:0.95)
Famiglia_9 | Attiv: 150 | A: 14.00% (z:-0.59) | B: 0.667% (z:-0.11)
Famiglia_10 | Attiv: 102 | A: 21.57% (z:1.61) | B: 0.980% (z:0.27)
Famiglia_11 | Attiv: 1150 | A: 13.57% (z:-2.04) | B: 0.174% (z:-2.26)
Famiglia_12 | Attiv: 153 | A: 20.92% (z:1.75) | B: 0.654% (z:-0.13)
Famiglia_15 | Attiv: 8 | A: 0.00% (z:-1.22) | B: 0.000% (z:-0.25)
Famiglia_18 | Attiv: 154 | A: 18.18% (z:0.83) | B: 0.649% (z:-0.14)
Famiglia_20 | Attiv: 95 | A: 14.74% (z:-0.27) | B: 0.000% (z:-0.85)
Famiglia_25 | Attiv: 86 | A: 20.93% (z:1.32) | B: 0.000% (z:-0.80)
Famiglia_30 | Attiv: 13 | A: 0.00% (z:-1.56) | B: 0.000% (z:-0.31)
Famiglia_33 | Attiv: 154 | A: 14.29% (z:-0.50) | B: 1.299% (z:0.79)
Famiglia_45 | Attiv: 13 | A: 0.00% (z:-1.56) | B: 0.000% (z:-0.31)
Famiglia_60 | Attiv: 11 | A: 0.00% (z:-1.43) | B: 0.000% (z:-0.29)
Famiglia_75 | Attiv: 13 | A: 0.00% (z:-1.56) | B: 0.000% (z:-0.31)
Famiglia_90 | Attiv: 13 | A: 0.00% (z:-1.56) | B: 0.000% (z:-0.31)
=================================================================
TOTALI GLOBALI - RUOTA BARI
=================================================================
Attivazioni totali: 5961
Coppie testate: 207955

TEST A: Empirico 14.61% | Teorico 15.76% | z-score: -2.43
TEST B: Empirico 0.436% | Teorico 0.747% | z-score: -2.79
TEST C: Empirico 18.81%
TEST D: Empirico 0.630%
=================================================================
Backtest completato per Bari!

ps: Io a suo tempo feci con l'ormai arcaico FLASH un Cerchio di Spilimbergo funzionante... Potrebbe centrare qualcosa con tutto questo? Se si vi potrei far vedere inizialmente degli screen shot e poi se interessa farvelo pure scaricare o ancora meglio provare a realizzare io o altri domatori di AI disposti a farlo una versione python magari su huggingface :)
Buongiorno grazie x lo script
 

Ultima estrazione Lotto

  • Estrazione del lotto
    venerdì 28 agosto 2026
    Bari
    79
    83
    41
    52
    53
    Cagliari
    72
    29
    02
    57
    87
    Firenze
    27
    04
    62
    21
    57
    Genova
    11
    24
    85
    79
    40
    Milano
    74
    70
    48
    49
    80
    Napoli
    71
    42
    70
    04
    39
    Palermo
    45
    56
    38
    71
    70
    Roma
    76
    40
    16
    10
    28
    Torino
    48
    31
    29
    38
    78
    Venezia
    23
    13
    62
    50
    56
    Nazionale
    73
    17
    07
    71
    89
    Estrazione Simbolotto
    Nazionale
    27
    11
    43
    41
    08
Indietro
Alto