Validazione di metodi con LottoScript

Pubblicato il 2021-11-11

Una delle possibilità offerte da LottoScript, è quella di verificare il comportamento di un determinato metodo di gioco sui dati presenti in archivio. Si tratta cioè di effettuare una serie di simulazioni di giocate per verificare quali sarebbero stati i risultati di una certa metodologia se questa fosse stata realmente applicata nel passato.


Chiaramente ogni metodo ha particolarità proprie e le funzioni interne di LottoScript offrono la possibilità di verificare praticamente qualsiasi condizione ed effettuare le giocate secondo diverse strategie (in termini economici e di scelta dei periodi di gioco). Esiste tuttavia uno schema di base per le giocate che è opportuno seguire, sia da parte dei meno esperti nella programmazione, che avranno così a disposizione un "modello" su cui lavorare, sia da parte di coloro che sanno leggere e capire alla prima occhiata che cosa fa un dato script: questo soprattutto per facilitare la comprensibilità dei listati e uniformare per quanto possibile i diversi stili di programmazione che si possono avere.


Come è stato detto, LottoScript consente di creare script costituiti da più subroutines o funzioni, cioè formati da più moduli. Tra questi il modulo "main" o principale è sempre presente, e il suo utilizzo può essere sufficiente a programmare e validare i metodi più semplici. In quanto segue sarà quindi descritta la struttura del più semplice script che può essere programmato per validare un metodo di gioco. A partire da questo schema l’utente potrà costruire via via condizioni e metodi via via più complessi avendo come unico limite la propria fantasia.


Uno script che valida un metodo di gioco è costituito in sintesi dalle seguenti sezioni:


  • Definizione delle variabili 
  • Definizione dei valori costanti 
  • Ciclo sull’intervallo da esaminare 
  • Eventuale resoconto 


Definizione delle variabili


Ad inizio script è necessario definire le variabili che saranno utilizzate. Questo è strettamente necessario per le variabili vettoriali, nella cui definizione viene specificata anche la/le dimensioni massime che il vettore può assumere, mentre per le variabili scalari non è rigorosamente richiesto. Per chiarezza di programmazione sarebbe comunque opportuno definire tutte le variabili utilizzate. La definizione (o dimensionamento) viene effettuata con l’istruzione Dim che consente di dichiarare variabili e assegnare lo spazio di memorizzazione corrispondente.


Esempi:


Dim vettore(9)      ' Dichiara una matrice contenente 10 elementi
Dim vettore ()      ' Dichiara una matrice dinamica
Dim a, b ' Dichiara due variabili


I nomi scelti per i vettori da passare alle routine interne che impostano i parametri di giocata sono a discrezione dell’utente. Tuttavia per conferire maggiore leggibilità agli script è opportuno utilizzare sempre gli stessi nomi.


Si dimensionino quindi i seguenti vettori caratteristici per la programmazione di un metodo.


Dim numeri(10)
Dim poste(5)
Dim ruote(10)


Se il metodo giocherà 2 numeri su 1 ruota i limiti impostati risulteranno sovrabbondanti, ma questo non comprometterà la correttezza dei risultati. Se invece si dimensionasse (ad esempio) il vettore ruote con 2 elementi e poi si volesse giocare su 3 ruote, quando si tentasse di impostare il terzo elemento LottoScript segnalerebbe un errore. Le tre istruzioni sopra riportate possono quindi essere sempre scritte in ogni metodo che si programma.


 


Definizione dei valori costanti per ottimizzare il tempo di esecuzione


Con il termine "valori costanti" si è voluto indicare quelle variabili che assumono sempre lo stesso valore durante il ciclo che scorre le diverse estrazioni per effettuare le giocate. Ad esempio può accadere che il primo numero da giocare sia sempre lo stesso e che a variare siano solo i restanti, oppure che si giochi sempre sulle stesse ruote, o che le poste di giocata rimangano invariate. In questo caso è opportuno indicare tali valori al di fuori del ciclo che scorre le estrazioni. Se essi venissero indicati al suo interno i risultati sarebbero comunque corretti, ma lo script risulterebbe inutilmente appesantito e più lento nell’esecuzione, in quanto ad ogni ciclo verrebbero eseguite istruzioni che non fanno altro che memorizzare in una variabile sempre lo stesso valore.


Supponiamo ad esempio di indicare con e la variabile che contiene il numero dell’estrazione di giocata. Ricordiamo che con estrazione di giocata si intende l’estrazione di elaborazione del pronostico, cioè la prima estrazione di gioco effettivo è quella successiva a quella di giocata. In questo caso il ciclo che include l’istruzione Gioca riguarderà tale variabile. Si vedano i seguenti due esempi.


 


Caso 1


For e = 6800 To 6900
poste(1)=1000 
ruote(1)=Ba_
numeri(1)=55
numeri(2)= Mese(e)
Impostagiocata 1,numeri,ruote,poste,5,2
Gioca e
Next


 


Caso 2


numeri(1)=55
ruote(1)=Ba_
poste(1)=1000
For e = 6800 To 6900
numeri(2)= Mese(e) 
Impostagiocata 1,numeri,ruote,poste,5,2
Gioca e
Next


Come si può notare, i due esempi sono del tutto equivalenti, ma nel primo caso l’impostazione del primo elemento del vettore numeri avviene ad ogni estrazione risultando ridondante (perché l’elemento impostato è sempre lo stesso). Lo stesso dicasi per l’impostazione della ruota di gioco e della posta sulla sorte di ambata. Diverso è il discorso per quanto riguarda il secondo numero: in questo esempio si gioca infatti il numero corrispondente al mese dell’estrazione e questo cambia quindi nello scorrere delle estrazioni di giocata. Si noti inoltre che, al limite, anche l’istruzione ImpostaGiocata potrebbe essere scritta all’esterno del ciclo, se i parametri di gioco (numeri,ruote, poste, durata, ecc…) non variassero per nulla durante la validazione.


 


Ciclo sull’intervallo da esaminare


L’istruzione di gioco vera e propria, che è l'istruzione Gioca, va inserita in un ciclo che consenta di testare il metodo su un intervallo di archivio. Negli esempi precedenti si è visto come tale ciclo sia realizzato attraverso un blocco For…Next che imposta l’intervallo interessato. Al suo interno è possibile includere opportune istruzioni If...Then...Else che selezionino le estrazioni di giocata (ad esempio si può volere elaborare il pronostico alla prima estrazione del mese e quindi giocare dalla seconda in avanti).


All’interno del ciclo sono inserite le istruzioni ImpostaGiocata e Gioca che rispettivamente impostano i parametri ed eseguono l’effettiva validazione, precedute da istruzioni che impostano i valori variabili dei parametri (i numeri da giocare in questo caso, ma potrebbe essere necessario variare le poste di gioco, le ruote, la durata, ecc…).


Attenzione


Esistono dei metodi di gioco che prevedono un numero diverso di bollette ad ogni estrazione di elaborazione del pronostico. In questo caso, oltre alla necessità di utilizzare una variabile opportuna per indicare il numero di giocata (da passare all’istruzione ImpostaGiocata, da resettare ad ogni estrazione e incrementare ad ogni impostazione dei parametri), è necessario porre al termine di ogni giocata un’istruzione ResettaGiocate che faccia pulizia dei parametri impostati. Essa andrebbe posta, nell’esempio proposto, tra l’istruzione Gioca e l’istruzione Next.



Eventuale resoconto


Per avere un resoconto economico delle giocate effettuate si può utilizzare l’istruzione ScriviResoconto, ponendo attenzione a che essa sia posta all’esterno del ciclo che scorre le estrazioni, in modo tale che venga eseguita una sola volta al termine della validazione, altrimenti il report potrebbe risultare lunghissimo e non interpretabile.


 


Esempi e consigli


Gestione dell'ultima estrazione mensile 


La struttura For... Next 


I metodi per il SuperEnalotto 


Leggere o scrivere dati su un file di testo 


 


Ti è stato utile questo articolo?

[ 0 su 0 l'hanno trovato utile ]

Serve ancora aiuto? Siamo qui per te!

Apri un ticket per richiedere assistenza al nostro Team Supporto LottoDesk.