Novità

Intelligenza artificiale e lotto 🤖🎱📈📉🎯

Grazie. Una curiosità confrontando i due dati noto dei valori differenti nella casella pattern quale è statisticamente la migliore?

Ciao non ho capito la domanda. Ad ogni modo con pattern mi riferisco alla sequenza binaria di ogni numero posizionato per singola ruota. In questo caso il primo su VE. Ogni ultima estrazione su cui si basa la previsione ha ovviamente un numero posizionato di base e una relativa sequenza binaria diversa. Statisticamente sembra essere migliore la condizione di costruzione sequenza bit seguente: presenze di bit 0 o 1 al 100% per rispettiva posizione nei 7 spazi corrispondenti della rispettiva sequenza indipendentemente che si tratti di una sola occorrenza o di qualsiasi range temporale analizzato. In pratica quando ottengo per ciascuna posizione dei 7 spazi bit il 100% di presenza 1 o 0 (per le ultime 30, 60 , 90, ecc.. estrazioni) allora il numero corrispondente derivato dalla trasformazione in decimale della rispettiva sequenza binaria costruita in questo modo ha interessanti chanches di palesarsi in pochi colpi anche se non in posizione. Ad ogni modo per adesso è troppo presto per ipotizzare anche questo anche se finora nei due casi testati ha dato una volta estratto al 2° colpo e la seconda volta ambo in classe 5 al 2° colpo sempre su ruota unica target. In pratica scarto ogni caso in cui anche una sola posizione bit delle 7 possibili non ha il 100% unico di 0 o 1 (es. 50% ecc...) e ricomincio la costruzione della sequenza diminuendo o aumentando, per adesso.. a mano..., il range temporale analizzato (per comodità... mnemonica sempre o quasi di figura 9).

Questa volta provo anche con BA (nuova ruota simbolotto di gennaio) con 8 in V posizione.

forseBA8in3colpi.jpg


100% bit (0 o 1) risultante anche con con una sola occorrenza x diversi rispettivi range temporali analizzati.

prima posizione 86 by ultime 270 es
seconda posizione 72 by ultime 70 es
terza posizione 71 by ultime 50 es
quarta posizione 38 by ultime 60 es
quinta posizione 8 by ultime 60 es

Secondo questa particolare analisi binaria il 71-86 potrebbero ripetersi... per E/A in pochi shots teorici...

Per gli amici del serpentello... 🐍 ho deciso di farvi questo pensierino... one...

Codice:
#STEP3-versione-10.py

import tkinter as tk
from tkinter import filedialog, messagebox, ttk
from threading import Thread
from queue import Queue
import numpy as np
from collections import defaultdict
import time


class SequenzaSpiaApp:
    def __init__(self, root):
        self.root = root
        self.root.title("Predittore Bit Lotto")
        self.setup_variables()
        self.create_ui()
        self.queue = Queue()
        self.check_queue()
        self.tabella_valori = []  # For storing table buttons

    def setup_variables(self):
        self.dati = []
        self.carrello = [None] * 7
        self.pattern_ricerca = []
        self.filename = None
        self.pattern_cache = {}
        self.soglia_var = tk.IntVar(value=50)  # Default threshold 50%
        self.bit_var = tk.IntVar(value=0)  # Add bit_var for analysis

    def create_ui(self):
        main_frame = ttk.Frame(self.root, padding="10")
        main_frame.pack(fill=tk.BOTH, expand=True)

        # 1-3: File loading and binary conversion section
        conversion_frame = ttk.LabelFrame(
            main_frame, text="Conversione File", padding="5")
        conversion_frame.pack(fill=tk.X, pady=5)

        # File loading
        ttk.Button(conversion_frame, text="Carica estrazioni.txt",
                   command=self.carica_file).pack(side=tk.LEFT, padx=5)
        self.nome_file_label = ttk.Label(
            conversion_frame, text="Nessun file caricato")
        self.nome_file_label.pack(side=tk.LEFT, padx=5)

        # Column selection with checkboxes
        self.column_vars = []
        for i in range(5):
            var = tk.BooleanVar()
            self.column_vars.append(var)
            ttk.Checkbutton(conversion_frame, text=f"Col {i+1}",
                            variable=var).pack(side=tk.LEFT, padx=2)

        ttk.Button(conversion_frame, text="Converti Colonne",
                   command=self.convert_selected_columns).pack(side=tk.LEFT, padx=5)

        # 4-7: Pattern analysis section
        analysis_frame = ttk.LabelFrame(
            main_frame, text="Analisi Pattern", padding="5")
        analysis_frame.pack(fill=tk.X, pady=5)

        ttk.Button(analysis_frame, text="Carica File Binario",
                   command=self.load_binary_file).pack(side=tk.LEFT, padx=5)

        # Pattern creation controls
        ttk.Label(analysis_frame, text="Righe:").pack(side=tk.LEFT, padx=5)
        self.righe_input = ttk.Entry(analysis_frame, width=5)
        self.righe_input.pack(side=tk.LEFT, padx=2)

        ttk.Label(analysis_frame, text="Colonne:").pack(side=tk.LEFT, padx=5)
        self.colonne_input = ttk.Entry(analysis_frame, width=5)
        self.colonne_input.pack(side=tk.LEFT, padx=2)

        ttk.Button(analysis_frame, text="Crea Pattern",
                   command=self.crea_tabella).pack(side=tk.LEFT, padx=5)
        ttk.Button(analysis_frame, text="Carica Pattern",
                   command=self.carica_pattern).pack(side=tk.LEFT, padx=5)

        # 8-9: Cart management section
        cart_frame = ttk.LabelFrame(
            main_frame, text="Gestione Carrello", padding="5")
        cart_frame.pack(fill=tk.X, pady=5)

        self.carrello_label = ttk.Label(
            cart_frame, text=self._format_carrello())
        self.carrello_label.pack(side=tk.LEFT, padx=5)

        ttk.Button(cart_frame, text="Svuota Carrello",
                   command=self.svuota_carrello).pack(side=tk.LEFT, padx=5)
        ttk.Button(cart_frame, text="Converti in Decimale",
                   command=self.esporta_carrello).pack(side=tk.LEFT, padx=5)

        # Add table frame for pattern creation
        self.table_frame = ttk.Frame(main_frame)
        self.table_frame.pack(fill=tk.BOTH, expand=True, pady=5)

        # Add progress bar
        self.progress = ttk.Progressbar(main_frame, mode='determinate')
        self.progress.pack(fill=tk.X, pady=5)

        # Add pattern display and analysis section
        pattern_control_frame = ttk.LabelFrame(
            main_frame, text="Controllo Pattern", padding="5")
        pattern_control_frame.pack(fill=tk.X, pady=5)

        self.pattern_display = ttk.Label(
            pattern_control_frame, text="Pattern: Nessun pattern caricato")
        self.pattern_display.pack(side=tk.LEFT, padx=5)

        ttk.Button(pattern_control_frame, text="Analizza Dataset",
                   command=self.start_analysis).pack(side=tk.LEFT, padx=5)

        # Add bit position selector
        bit_frame = ttk.LabelFrame(
            main_frame, text="Selezione Bit", padding="5")
        bit_frame.pack(fill=tk.X, pady=5)

        ttk.Label(bit_frame, text="Posizione bit (0-6):").pack(side=tk.LEFT, padx=5)
        self.bit_position = ttk.Spinbox(bit_frame, from_=0, to=6, width=5)
        self.bit_position.pack(side=tk.LEFT, padx=5)
        self.bit_position.set(0)

        # Add extraction range selector
        range_frame = ttk.LabelFrame(
            main_frame, text="Range Analisi", padding="5")
        range_frame.pack(fill=tk.X, pady=5)

        ttk.Label(range_frame, text="Ultime N estrazioni (0=tutte):").pack(
            side=tk.LEFT, padx=5)
        self.n_estrazioni = ttk.Entry(range_frame, width=6)
        self.n_estrazioni.pack(side=tk.LEFT, padx=5)
        self.n_estrazioni.insert(0, "0")

        # Add results frame
        self.results_frame = ttk.LabelFrame(
            main_frame, text="Risultati Analisi", padding="5")
        self.results_frame.pack(fill=tk.X, pady=5)

        self.results_label = ttk.Label(
            self.results_frame, text="In attesa analisi...")
        self.results_label.pack(side=tk.LEFT, padx=5)

    def carica_file(self):
        """Load and process file"""
        try:
            filename = filedialog.askopenfilename(
                filetypes=[("Text files", "*.txt")])
            if filename:
                self.filename = filename
                self.nome_file_label.config(
                    text=f"File: {filename.split('/')[-1]}")
                Thread(target=self.load_data, daemon=True).start()
        except Exception as e:
            self.queue.put(("error", f"Errore caricamento: {str(e)}"))

    def load_data(self):
        """Process file data removing dots"""
        try:
            with open(self.filename, 'r') as file:
                self.dati = [line.strip() for line in file.readlines()]
            print(f"Dati caricati: {self.dati[:5]}...")  # Debug first 5 lines
            self.queue.put(("update", f"Totale righe: {len(self.dati)}"))
        except Exception as e:
            self.queue.put(("error", f"Errore lettura: {str(e)}"))

    def _format_carrello(self):
        """Format cart display"""
        return "Carrello: " + " ".join(str(b) if b is not None else "_" for b in self.carrello)

    def check_queue(self):
        """Process queue messages"""
        while not self.queue.empty():
            msg = self.queue.get()
            if isinstance(msg, tuple):
                msg_type, content = msg
                if msg_type == "error":
                    messagebox.showerror("Errore", content)
                elif msg_type == "update":
                    self.nome_file_label.config(text=content)
        self.root.after(100, self.check_queue)

    def start_analysis(self):
        """Start pattern analysis"""
        if not self.dati:
            messagebox.showwarning(
                "Attenzione", "Caricare prima un file binario")
            return
        if not self.pattern_ricerca:
            messagebox.showwarning("Attenzione", "Caricare prima un pattern")
            return

        Thread(target=self.analizza_dataset, daemon=True).start()

    def esporta_carrello(self):
        """Export cart results"""
        if None in self.carrello:
            messagebox.showwarning("Avviso", "Completare il carrello")
            return
        val = int("".join(map(str, self.carrello)), 2)
        messagebox.showinfo("Risultato", f"Valore decimale: {val}")

    def crea_tabella(self):
        """Create dynamic pattern table"""
        try:
            righe = int(self.righe_input.get())
            colonne = int(self.colonne_input.get())

            # Clear existing table
            for widget in self.table_frame.winfo_children():
                widget.destroy()

            self.tabella_valori = []
            for i in range(righe):
                row = []
                for j in range(colonne):
                    btn = ttk.Button(self.table_frame, text="0", width=2,
                                     command=lambda r=i, c=j: self.toggle_bit(r, c))
                    btn.grid(row=i, column=j, padx=2, pady=2)
                    row.append(btn)
                self.tabella_valori.append(row)

            self.queue.put(("update", "Tabella pattern creata"))

        except ValueError:
            self.queue.put(("error", "Inserire valori numerici validi"))

    def toggle_bit(self, riga, colonna):
        """Toggle bit value in pattern table"""
        button = self.tabella_valori[riga][colonna]
        current = button.cget("text")
        new_value = "1" if current == "0" else "0"
        button.config(text=new_value)

    def carica_pattern(self):
        """Load pattern from table"""
        try:
            pattern = []
            for row in self.tabella_valori:
                pattern_row = []
                for button in row:
                    pattern_row.append(int(button.cget("text")))
                pattern.append(pattern_row)

            self.pattern_ricerca = pattern
            pattern_str = "\n".join(" ".join(str(bit)
                                    for bit in row) for row in pattern)
            self.pattern_display.config(text=f"Pattern:\n{pattern_str}")
            messagebox.showinfo("Pattern Caricato",
                                "Pattern pronto per l'analisi")

        except Exception as e:
            messagebox.showerror(
                "Errore", f"Errore caricamento pattern: {str(e)}")

    def cerca_pattern(self, dataset, pattern):
        """Pattern matching function that looks for pattern within each row"""
        corrispondenze = []
        pattern_length = len(pattern)

        for index, riga in enumerate(dataset):
            for i in range(len(riga) - pattern_length + 1):
                if riga[i:i + pattern_length] == pattern:
                    corrispondenze.append((index, i))

        return corrispondenze

    def analizza_dataset(self):
        """Analyze dataset with selected pattern - starting from oldest data"""
        try:
            self.progress['value'] = 0
            reversed_data = list(reversed(self.dati))

            # Get number of extractions to analyze
            n = self.n_estrazioni.get().strip()
            if n and n.isdigit():
                n = int(n)
                if 0 < n < len(reversed_data):
                    reversed_data = reversed_data[:n]
                    print(f"\nAnalisi limitata alle ultime {n} estrazioni")

            total_rows = len(reversed_data)
            bit_pos = int(self.bit_position.get())

            zeros = 0
            ones = 0
            matches = 0

            print("\n====== ANALISI DETTAGLIATA PATTERN ======")
            print(f"Posizione bit analizzata: {bit_pos}")
            print("\nPattern di ricerca:")
            for row in self.pattern_ricerca:
                print("".join(str(bit) for bit in row))
            print("\n=== SEQUENZE TROVATE ===")

            for i, line in enumerate(reversed_data):
                if i + len(self.pattern_ricerca) <= total_rows:
                    match = True
                    current_sequence = []

                    # Check pattern match
                    for row_idx, pattern_row in enumerate(self.pattern_ricerca):
                        data_row = reversed_data[i + row_idx]
                        current_sequence.append(data_row)
                        for col_idx, pattern_bit in enumerate(pattern_row):
                            if col_idx < len(data_row):
                                if int(data_row[col_idx]) != pattern_bit:
                                    match = False
                                    break
                        if not match:
                            break

                    if match:
                        matches += 1
                        next_row_idx = i + len(self.pattern_ricerca)
                        if next_row_idx < total_rows:
                            next_row = reversed_data[next_row_idx]
                            next_bit = int(next_row[bit_pos])

                            print(f"\n--- Match #{matches} ---")
                            print(f"Riga di partenza: {
                                  total_rows - i} (dal basso)")
                            print("Sequenza trovata:")
                            for seq_row in current_sequence:
                                print(seq_row)
                            print(f"\nRiga successiva: {next_row}")
                            print(f"Bit in posizione {bit_pos}: {next_bit}")
                            print(
                                f"Conteggio corrente -> 0: {zeros}, 1: {ones}")

                            if next_bit == 0:
                                zeros += 1
                            else:
                                ones += 1

                self.progress['value'] = (i / total_rows) * 100
                self.root.update_idletasks()

            print(f"\n=== RISULTATI FINALI ({
                  total_rows} estrazioni analizzate) ===")
            print(f"Totale match: {matches}")
            print(f"Zeri: {zeros}")
            print(f"Uni: {ones}")

            # Update results display
            total = zeros + ones
            zero_perc = (zeros / total * 100) if total > 0 else 0
            one_perc = (ones / total * 100) if total > 0 else 0

            result_text = f"""
            Totale match: {matches}
            Bit 0: {zeros} ({zero_perc:.1f}%)
            Bit 1: {ones} ({one_perc:.1f}%)
            """
            self.results_label.config(text=result_text)

            # Update cart based on majority
            next_pos = self.carrello.index(
                None) if None in self.carrello else -1
            if next_pos >= 0:
                self.carrello[next_pos] = 1 if ones > zeros else 0
                self.carrello_label.config(text=self._format_carrello())

        except Exception as e:
            messagebox.showerror("Errore Analisi", str(e))

    def process_matches(self, matches, best_bit_pos):
        """Process matches and update cart"""
        if best_bit_pos >= 0:
            total_matches = matches[best_bit_pos]
            threshold = self.soglia_var.get() / 100.0

            next_pos = None
            for i, val in enumerate(self.carrello):
                if val is None:
                    next_pos = i
                    break

            if next_pos is not None:
                if total_matches / len(self.dati) >= threshold:
                    self.carrello[next_pos] = 1
                else:
                    self.carrello[next_pos] = 0

                self.carrello_label.config(text=self._format_carrello())

    def convert_selected_columns(self):
        """Convert selected columns to binary files"""
        try:
            if not self.filename:
                messagebox.showwarning(
                    "Attenzione", "Caricare prima estrazioni.txt")
                return

            for i, var in enumerate(self.column_vars):
                if var.get():
                    output_file = f"b{i+1}.txt"
                    self.convert_column_to_binary_file(i+1, output_file)

        except Exception as e:
            messagebox.showerror(
                "Errore", f"Errore nella conversione: {str(e)}")

    def convert_column_to_binary_file(self, column_index, output_file):
        """Convert single column to binary file"""
        try:
            with open(self.filename, 'r') as f:
                lines = f.readlines()

            transformed_lines = []
            for line in lines:
                numbers = line.strip().split(".")
                if column_index - 1 < len(numbers):
                    binary = f"{int(numbers[column_index - 1]):07b}"
                    binary_with_dots = ".".join(binary)
                    transformed_lines.append(binary_with_dots)

            with open(output_file, 'w') as f:
                f.write("\n".join(transformed_lines))

        except Exception as e:
            raise Exception(f"Errore colonna {column_index}: {str(e)}")

    def load_binary_file(self):
        """Load binary file for analysis"""
        try:
            filename = filedialog.askopenfilename(
                filetypes=[("Binary files", "b*.txt")])
            if filename:
                self.binary_filename = filename
                self.nome_file_label.config(
                    text=f"File binario: {filename.split('/')[-1]}")
                self.load_binary_data()
        except Exception as e:
            messagebox.showerror(
                "Errore", f"Errore caricamento file binario: {str(e)}")

    def load_binary_data(self):
        """Load and process binary file data"""
        try:
            with open(self.binary_filename, 'r') as file:
                self.dati = [line.strip().replace('.', '')
                             for line in file.readlines()]
            messagebox.showinfo("Successo", f"File binario caricato: {
                                len(self.dati)} righe")
        except Exception as e:
            messagebox.showerror(
                "Errore", f"Errore lettura file binario: {str(e)}")

    def svuota_carrello(self):
        """Clear the cart"""
        self.carrello = [None] * 7
        self.carrello_label.config(text=self._format_carrello())

    def convert_column_to_binary(self):
        """Convert selected column to binary and save to file"""
        try:
            if not self.filename:
                messagebox.showwarning("Attenzione", "Carica prima un file.")
                return

            column_index = self.column_var.get()
            if column_index < 1:
                messagebox.showwarning(
                    "Errore", "Numero di colonna non valido.")
                return

            output_file = filedialog.asksaveasfilename(
                defaultextension=".txt",
                filetypes=[("Text files", "*.txt")])

            if not output_file:
                return

            with open(self.filename, 'r') as f:
                lines = f.readlines()

            transformed_lines = []
            for line in lines:
                numbers = line.strip().split(".")
                if column_index - 1 < len(numbers):
                    try:
                        binary = f"{int(numbers[column_index - 1]):07b}"
                        binary_with_dots = ".".join(binary)
                        transformed_lines.append(binary_with_dots)
                    except ValueError:
                        transformed_lines.append("Errore")
                else:
                    transformed_lines.append("Errore")

            with open(output_file, 'w') as f:
                f.write("\n".join(transformed_lines))

            messagebox.showinfo("Conversione Completata",
                                f"File salvato in: {output_file}")

        except Exception as e:
            messagebox.showerror("Errore",
                                 f"Errore nella conversione: {str(e)}")


if __name__ == "__main__":
    root = tk.Tk()
    app = SequenzaSpiaApp(root)
    root.mainloop()

Si tratta del code python che ho realizzato solo grazie all'AI (grande cambio di paradigma for me) e che ho intenzione di potenziare e automatizzare ulteriormente... tempo e voglia permettendo. Chi volesse partecipare a questa sua ottimizzazione tramite AI o meno ben venga... con le sue eventuali condivisioni "potenzianti" in tal senso.


Nessuna Certezza Solo Poca Probabilità
 
Ultima modifica:
Ciao Tom,
innanzitutto Buon Anno a te e ai lettori del thread.
Dopo svariati tentativi sto iniziando a capire come funziona python e vorrei provare ad addestrare una rete neurale per fare previsioni, ovviamente con l'aiuto di chatgpt perché da solo non ci riuscirei mai. Sicuramente ci vorrà molto tempo, forse uscirà qualcosa di buono o forse sarà la solita perdita di tempo. Staremo a vedere 😄👋
 
Ciao non ho capito la domanda. Ad ogni modo con pattern mi riferisco alla sequenza binaria di ogni numero posizionato per singola ruota. In questo caso il primo su VE. Ogni ultima estrazione su cui si basa la previsione ha ovviamente un numero posizionato di base e una relativa sequenza binaria diversa. Statisticamente sembra essere migliore la condizione di costruzione sequenza bit seguente: presenze di bit 0 o 1 al 100% per rispettiva posizione nei 7 spazi corrispondenti della rispettiva sequenza indipendentemente che si tratti di una sola occorrenza o di qualsiasi range temporale analizzato. In pratica quando ottengo per ciascuna posizione dei 7 spazi bit il 100% di presenza 1 o 0 (per le ultime 30, 60 , 90, ecc.. estrazioni) allora il numero corrispondente derivato dalla trasformazione in decimale della rispettiva sequenza binaria costruita in questo modo ha interessanti chanches di palesarsi in pochi colpi anche se non in posizione. Ad ogni modo per adesso è troppo presto per ipotizzare anche questo anche se finora nei due casi testati ha dato una volta estratto al 2° colpo e la seconda volta ambo in classe 5 al 2° colpo sempre su ruota unica target. In pratica scarto ogni caso in cui anche una sola posizione bit delle 7 possibili non ha il 100% unico di 0 o 1 (es. 50% ecc...) e ricomincio la costruzione della sequenza diminuendo o aumentando, per adesso.. a mano..., il range temporale analizzato (per comodità... mnemonica sempre o quasi di figura 9).

Questa volta provo anche con BA (nuova ruota simbolotto di gennaio) con 8 in V posizione.

Vedi l'allegato 2295582


100% bit (0 o 1) risultante anche con con una sola occorrenza x diversi rispettivi range temporali analizzati.

prima posizione 86 by ultime 270 es
seconda posizione 72 by ultime 70 es
terza posizione 71 by ultime 50 es
quarta posizione 38 by ultime 60 es
quinta posizione 8 by ultime 60 es

Secondo questa particolare analisi binaria il 71-86 potrebbero ripetersi... per E/A in pochi shots teorici...

Per gli amici del serpentello... 🐍 ho deciso di farvi questo pensierino... one...

Codice:
#STEP3-versione-10.py

import tkinter as tk
from tkinter import filedialog, messagebox, ttk
from threading import Thread
from queue import Queue
import numpy as np
from collections import defaultdict
import time


class SequenzaSpiaApp:
    def __init__(self, root):
        self.root = root
        self.root.title("Predittore Bit Lotto")
        self.setup_variables()
        self.create_ui()
        self.queue = Queue()
        self.check_queue()
        self.tabella_valori = []  # For storing table buttons

    def setup_variables(self):
        self.dati = []
        self.carrello = [None] * 7
        self.pattern_ricerca = []
        self.filename = None
        self.pattern_cache = {}
        self.soglia_var = tk.IntVar(value=50)  # Default threshold 50%
        self.bit_var = tk.IntVar(value=0)  # Add bit_var for analysis

    def create_ui(self):
        main_frame = ttk.Frame(self.root, padding="10")
        main_frame.pack(fill=tk.BOTH, expand=True)

        # 1-3: File loading and binary conversion section
        conversion_frame = ttk.LabelFrame(
            main_frame, text="Conversione File", padding="5")
        conversion_frame.pack(fill=tk.X, pady=5)

        # File loading
        ttk.Button(conversion_frame, text="Carica estrazioni.txt",
                   command=self.carica_file).pack(side=tk.LEFT, padx=5)
        self.nome_file_label = ttk.Label(
            conversion_frame, text="Nessun file caricato")
        self.nome_file_label.pack(side=tk.LEFT, padx=5)

        # Column selection with checkboxes
        self.column_vars = []
        for i in range(5):
            var = tk.BooleanVar()
            self.column_vars.append(var)
            ttk.Checkbutton(conversion_frame, text=f"Col {i+1}",
                            variable=var).pack(side=tk.LEFT, padx=2)

        ttk.Button(conversion_frame, text="Converti Colonne",
                   command=self.convert_selected_columns).pack(side=tk.LEFT, padx=5)

        # 4-7: Pattern analysis section
        analysis_frame = ttk.LabelFrame(
            main_frame, text="Analisi Pattern", padding="5")
        analysis_frame.pack(fill=tk.X, pady=5)

        ttk.Button(analysis_frame, text="Carica File Binario",
                   command=self.load_binary_file).pack(side=tk.LEFT, padx=5)

        # Pattern creation controls
        ttk.Label(analysis_frame, text="Righe:").pack(side=tk.LEFT, padx=5)
        self.righe_input = ttk.Entry(analysis_frame, width=5)
        self.righe_input.pack(side=tk.LEFT, padx=2)

        ttk.Label(analysis_frame, text="Colonne:").pack(side=tk.LEFT, padx=5)
        self.colonne_input = ttk.Entry(analysis_frame, width=5)
        self.colonne_input.pack(side=tk.LEFT, padx=2)

        ttk.Button(analysis_frame, text="Crea Pattern",
                   command=self.crea_tabella).pack(side=tk.LEFT, padx=5)
        ttk.Button(analysis_frame, text="Carica Pattern",
                   command=self.carica_pattern).pack(side=tk.LEFT, padx=5)

        # 8-9: Cart management section
        cart_frame = ttk.LabelFrame(
            main_frame, text="Gestione Carrello", padding="5")
        cart_frame.pack(fill=tk.X, pady=5)

        self.carrello_label = ttk.Label(
            cart_frame, text=self._format_carrello())
        self.carrello_label.pack(side=tk.LEFT, padx=5)

        ttk.Button(cart_frame, text="Svuota Carrello",
                   command=self.svuota_carrello).pack(side=tk.LEFT, padx=5)
        ttk.Button(cart_frame, text="Converti in Decimale",
                   command=self.esporta_carrello).pack(side=tk.LEFT, padx=5)

        # Add table frame for pattern creation
        self.table_frame = ttk.Frame(main_frame)
        self.table_frame.pack(fill=tk.BOTH, expand=True, pady=5)

        # Add progress bar
        self.progress = ttk.Progressbar(main_frame, mode='determinate')
        self.progress.pack(fill=tk.X, pady=5)

        # Add pattern display and analysis section
        pattern_control_frame = ttk.LabelFrame(
            main_frame, text="Controllo Pattern", padding="5")
        pattern_control_frame.pack(fill=tk.X, pady=5)

        self.pattern_display = ttk.Label(
            pattern_control_frame, text="Pattern: Nessun pattern caricato")
        self.pattern_display.pack(side=tk.LEFT, padx=5)

        ttk.Button(pattern_control_frame, text="Analizza Dataset",
                   command=self.start_analysis).pack(side=tk.LEFT, padx=5)

        # Add bit position selector
        bit_frame = ttk.LabelFrame(
            main_frame, text="Selezione Bit", padding="5")
        bit_frame.pack(fill=tk.X, pady=5)

        ttk.Label(bit_frame, text="Posizione bit (0-6):").pack(side=tk.LEFT, padx=5)
        self.bit_position = ttk.Spinbox(bit_frame, from_=0, to=6, width=5)
        self.bit_position.pack(side=tk.LEFT, padx=5)
        self.bit_position.set(0)

        # Add extraction range selector
        range_frame = ttk.LabelFrame(
            main_frame, text="Range Analisi", padding="5")
        range_frame.pack(fill=tk.X, pady=5)

        ttk.Label(range_frame, text="Ultime N estrazioni (0=tutte):").pack(
            side=tk.LEFT, padx=5)
        self.n_estrazioni = ttk.Entry(range_frame, width=6)
        self.n_estrazioni.pack(side=tk.LEFT, padx=5)
        self.n_estrazioni.insert(0, "0")

        # Add results frame
        self.results_frame = ttk.LabelFrame(
            main_frame, text="Risultati Analisi", padding="5")
        self.results_frame.pack(fill=tk.X, pady=5)

        self.results_label = ttk.Label(
            self.results_frame, text="In attesa analisi...")
        self.results_label.pack(side=tk.LEFT, padx=5)

    def carica_file(self):
        """Load and process file"""
        try:
            filename = filedialog.askopenfilename(
                filetypes=[("Text files", "*.txt")])
            if filename:
                self.filename = filename
                self.nome_file_label.config(
                    text=f"File: {filename.split('/')[-1]}")
                Thread(target=self.load_data, daemon=True).start()
        except Exception as e:
            self.queue.put(("error", f"Errore caricamento: {str(e)}"))

    def load_data(self):
        """Process file data removing dots"""
        try:
            with open(self.filename, 'r') as file:
                self.dati = [line.strip() for line in file.readlines()]
            print(f"Dati caricati: {self.dati[:5]}...")  # Debug first 5 lines
            self.queue.put(("update", f"Totale righe: {len(self.dati)}"))
        except Exception as e:
            self.queue.put(("error", f"Errore lettura: {str(e)}"))

    def _format_carrello(self):
        """Format cart display"""
        return "Carrello: " + " ".join(str(b) if b is not None else "_" for b in self.carrello)

    def check_queue(self):
        """Process queue messages"""
        while not self.queue.empty():
            msg = self.queue.get()
            if isinstance(msg, tuple):
                msg_type, content = msg
                if msg_type == "error":
                    messagebox.showerror("Errore", content)
                elif msg_type == "update":
                    self.nome_file_label.config(text=content)
        self.root.after(100, self.check_queue)

    def start_analysis(self):
        """Start pattern analysis"""
        if not self.dati:
            messagebox.showwarning(
                "Attenzione", "Caricare prima un file binario")
            return
        if not self.pattern_ricerca:
            messagebox.showwarning("Attenzione", "Caricare prima un pattern")
            return

        Thread(target=self.analizza_dataset, daemon=True).start()

    def esporta_carrello(self):
        """Export cart results"""
        if None in self.carrello:
            messagebox.showwarning("Avviso", "Completare il carrello")
            return
        val = int("".join(map(str, self.carrello)), 2)
        messagebox.showinfo("Risultato", f"Valore decimale: {val}")

    def crea_tabella(self):
        """Create dynamic pattern table"""
        try:
            righe = int(self.righe_input.get())
            colonne = int(self.colonne_input.get())

            # Clear existing table
            for widget in self.table_frame.winfo_children():
                widget.destroy()

            self.tabella_valori = []
            for i in range(righe):
                row = []
                for j in range(colonne):
                    btn = ttk.Button(self.table_frame, text="0", width=2,
                                     command=lambda r=i, c=j: self.toggle_bit(r, c))
                    btn.grid(row=i, column=j, padx=2, pady=2)
                    row.append(btn)
                self.tabella_valori.append(row)

            self.queue.put(("update", "Tabella pattern creata"))

        except ValueError:
            self.queue.put(("error", "Inserire valori numerici validi"))

    def toggle_bit(self, riga, colonna):
        """Toggle bit value in pattern table"""
        button = self.tabella_valori[riga][colonna]
        current = button.cget("text")
        new_value = "1" if current == "0" else "0"
        button.config(text=new_value)

    def carica_pattern(self):
        """Load pattern from table"""
        try:
            pattern = []
            for row in self.tabella_valori:
                pattern_row = []
                for button in row:
                    pattern_row.append(int(button.cget("text")))
                pattern.append(pattern_row)

            self.pattern_ricerca = pattern
            pattern_str = "\n".join(" ".join(str(bit)
                                    for bit in row) for row in pattern)
            self.pattern_display.config(text=f"Pattern:\n{pattern_str}")
            messagebox.showinfo("Pattern Caricato",
                                "Pattern pronto per l'analisi")

        except Exception as e:
            messagebox.showerror(
                "Errore", f"Errore caricamento pattern: {str(e)}")

    def cerca_pattern(self, dataset, pattern):
        """Pattern matching function that looks for pattern within each row"""
        corrispondenze = []
        pattern_length = len(pattern)

        for index, riga in enumerate(dataset):
            for i in range(len(riga) - pattern_length + 1):
                if riga[i:i + pattern_length] == pattern:
                    corrispondenze.append((index, i))

        return corrispondenze

    def analizza_dataset(self):
        """Analyze dataset with selected pattern - starting from oldest data"""
        try:
            self.progress['value'] = 0
            reversed_data = list(reversed(self.dati))

            # Get number of extractions to analyze
            n = self.n_estrazioni.get().strip()
            if n and n.isdigit():
                n = int(n)
                if 0 < n < len(reversed_data):
                    reversed_data = reversed_data[:n]
                    print(f"\nAnalisi limitata alle ultime {n} estrazioni")

            total_rows = len(reversed_data)
            bit_pos = int(self.bit_position.get())

            zeros = 0
            ones = 0
            matches = 0

            print("\n====== ANALISI DETTAGLIATA PATTERN ======")
            print(f"Posizione bit analizzata: {bit_pos}")
            print("\nPattern di ricerca:")
            for row in self.pattern_ricerca:
                print("".join(str(bit) for bit in row))
            print("\n=== SEQUENZE TROVATE ===")

            for i, line in enumerate(reversed_data):
                if i + len(self.pattern_ricerca) <= total_rows:
                    match = True
                    current_sequence = []

                    # Check pattern match
                    for row_idx, pattern_row in enumerate(self.pattern_ricerca):
                        data_row = reversed_data[i + row_idx]
                        current_sequence.append(data_row)
                        for col_idx, pattern_bit in enumerate(pattern_row):
                            if col_idx < len(data_row):
                                if int(data_row[col_idx]) != pattern_bit:
                                    match = False
                                    break
                        if not match:
                            break

                    if match:
                        matches += 1
                        next_row_idx = i + len(self.pattern_ricerca)
                        if next_row_idx < total_rows:
                            next_row = reversed_data[next_row_idx]
                            next_bit = int(next_row[bit_pos])

                            print(f"\n--- Match #{matches} ---")
                            print(f"Riga di partenza: {
                                  total_rows - i} (dal basso)")
                            print("Sequenza trovata:")
                            for seq_row in current_sequence:
                                print(seq_row)
                            print(f"\nRiga successiva: {next_row}")
                            print(f"Bit in posizione {bit_pos}: {next_bit}")
                            print(
                                f"Conteggio corrente -> 0: {zeros}, 1: {ones}")

                            if next_bit == 0:
                                zeros += 1
                            else:
                                ones += 1

                self.progress['value'] = (i / total_rows) * 100
                self.root.update_idletasks()

            print(f"\n=== RISULTATI FINALI ({
                  total_rows} estrazioni analizzate) ===")
            print(f"Totale match: {matches}")
            print(f"Zeri: {zeros}")
            print(f"Uni: {ones}")

            # Update results display
            total = zeros + ones
            zero_perc = (zeros / total * 100) if total > 0 else 0
            one_perc = (ones / total * 100) if total > 0 else 0

            result_text = f"""
            Totale match: {matches}
            Bit 0: {zeros} ({zero_perc:.1f}%)
            Bit 1: {ones} ({one_perc:.1f}%)
            """
            self.results_label.config(text=result_text)

            # Update cart based on majority
            next_pos = self.carrello.index(
                None) if None in self.carrello else -1
            if next_pos >= 0:
                self.carrello[next_pos] = 1 if ones > zeros else 0
                self.carrello_label.config(text=self._format_carrello())

        except Exception as e:
            messagebox.showerror("Errore Analisi", str(e))

    def process_matches(self, matches, best_bit_pos):
        """Process matches and update cart"""
        if best_bit_pos >= 0:
            total_matches = matches[best_bit_pos]
            threshold = self.soglia_var.get() / 100.0

            next_pos = None
            for i, val in enumerate(self.carrello):
                if val is None:
                    next_pos = i
                    break

            if next_pos is not None:
                if total_matches / len(self.dati) >= threshold:
                    self.carrello[next_pos] = 1
                else:
                    self.carrello[next_pos] = 0

                self.carrello_label.config(text=self._format_carrello())

    def convert_selected_columns(self):
        """Convert selected columns to binary files"""
        try:
            if not self.filename:
                messagebox.showwarning(
                    "Attenzione", "Caricare prima estrazioni.txt")
                return

            for i, var in enumerate(self.column_vars):
                if var.get():
                    output_file = f"b{i+1}.txt"
                    self.convert_column_to_binary_file(i+1, output_file)

        except Exception as e:
            messagebox.showerror(
                "Errore", f"Errore nella conversione: {str(e)}")

    def convert_column_to_binary_file(self, column_index, output_file):
        """Convert single column to binary file"""
        try:
            with open(self.filename, 'r') as f:
                lines = f.readlines()

            transformed_lines = []
            for line in lines:
                numbers = line.strip().split(".")
                if column_index - 1 < len(numbers):
                    binary = f"{int(numbers[column_index - 1]):07b}"
                    binary_with_dots = ".".join(binary)
                    transformed_lines.append(binary_with_dots)

            with open(output_file, 'w') as f:
                f.write("\n".join(transformed_lines))

        except Exception as e:
            raise Exception(f"Errore colonna {column_index}: {str(e)}")

    def load_binary_file(self):
        """Load binary file for analysis"""
        try:
            filename = filedialog.askopenfilename(
                filetypes=[("Binary files", "b*.txt")])
            if filename:
                self.binary_filename = filename
                self.nome_file_label.config(
                    text=f"File binario: {filename.split('/')[-1]}")
                self.load_binary_data()
        except Exception as e:
            messagebox.showerror(
                "Errore", f"Errore caricamento file binario: {str(e)}")

    def load_binary_data(self):
        """Load and process binary file data"""
        try:
            with open(self.binary_filename, 'r') as file:
                self.dati = [line.strip().replace('.', '')
                             for line in file.readlines()]
            messagebox.showinfo("Successo", f"File binario caricato: {
                                len(self.dati)} righe")
        except Exception as e:
            messagebox.showerror(
                "Errore", f"Errore lettura file binario: {str(e)}")

    def svuota_carrello(self):
        """Clear the cart"""
        self.carrello = [None] * 7
        self.carrello_label.config(text=self._format_carrello())

    def convert_column_to_binary(self):
        """Convert selected column to binary and save to file"""
        try:
            if not self.filename:
                messagebox.showwarning("Attenzione", "Carica prima un file.")
                return

            column_index = self.column_var.get()
            if column_index < 1:
                messagebox.showwarning(
                    "Errore", "Numero di colonna non valido.")
                return

            output_file = filedialog.asksaveasfilename(
                defaultextension=".txt",
                filetypes=[("Text files", "*.txt")])

            if not output_file:
                return

            with open(self.filename, 'r') as f:
                lines = f.readlines()

            transformed_lines = []
            for line in lines:
                numbers = line.strip().split(".")
                if column_index - 1 < len(numbers):
                    try:
                        binary = f"{int(numbers[column_index - 1]):07b}"
                        binary_with_dots = ".".join(binary)
                        transformed_lines.append(binary_with_dots)
                    except ValueError:
                        transformed_lines.append("Errore")
                else:
                    transformed_lines.append("Errore")

            with open(output_file, 'w') as f:
                f.write("\n".join(transformed_lines))

            messagebox.showinfo("Conversione Completata",
                                f"File salvato in: {output_file}")

        except Exception as e:
            messagebox.showerror("Errore",
                                 f"Errore nella conversione: {str(e)}")


if __name__ == "__main__":
    root = tk.Tk()
    app = SequenzaSpiaApp(root)
    root.mainloop()

Si tratta del code python che ho realizzato solo grazie all'AI (grande cambio di paradigma for me) e che ho intenzione di potenziare e automatizzare ulteriormente... tempo e voglia permettendo. Chi volesse partecipare a questa sua ottimizzazione tramite AI o meno ben venga... con le sue eventuali condivisioni "potenzianti" in tal senso.


Nessuna Certezza Solo Poca Probabilità
Buongiorno lotto_tom75 la ringrazio per aver messo a disposizione il suo script e volevo chiedere una cortesia,l' archivio estrazioni txt dove si può ricavare? Grazie
 
Buongiorno lotto_tom75 la ringrazio per aver messo a disposizione il suo script e volevo chiedere una cortesia,l' archivio estrazioni txt dove si può ricavare? Grazie

Ciao Silvix con questo mio scriptino ti puoi ricreare tu e chi vorrà seguirti nello studio... tutte le volte che vuoi l'archivio necessario a quel tipo di analisi... ovvero con l'estrazione più recente in alto e quella più remota in basso. Ovviamente il range temporale desiderato lo imposti con l'apposita barra in basso di spaziometria. Puoi anche generarlo solo una volta per la ruota o/e le ruote volute e poi aggiornare " a mano " solo l'ultima più in alto... Lo script ti genera un file archivio per la ruota voluta nella stessa cartella dove risiede lo script stesso e con questo nome di default : estrazioni-siglaRuota(ruotavoluta).txt ad esempio estrazioni-BA.txt ecc...

Codice:
Option Explicit
Sub Main
   Dim es
   Dim ruota
   Dim Inizio
   Dim ruotavoluta
   Dim tempo
   Dim Posizionevoluta
   Dim fileestrazionixAIlottoProject
   Dim fc
   Dim fileconfermaazione
   ruotavoluta = ScegliRuota
   Inizio = EstrazioneIni '
   Dim filearchivioxruotavoluta
   filearchivioxruotavoluta = "estrazioni-" & SiglaRuota(ruotavoluta) & ".txt"
   Scrivi
   Scrivi "File " & "estrazioni-" & SiglaRuota(ruotavoluta) & ".txt" & " per la ruota di " & NomeRuota(ruotavoluta) & " aggiornato con successo!"
   Scrivi "All'ultima estrazione della ruota " & NomeRuota(ruotavoluta) & " n. " & GetInfoEstrazione(EstrazioniArchivio)
   Scrivi "Range archivio estrazioni presente nel file " & GetInfoEstrazione(EstrazioneIni) & "-" & GetInfoEstrazione(EstrazioniArchivio)
   Scrivi "Estrazioni presenti nel file: " &(EstrazioniArchivio - EstrazioneIni) + 1
   Scrivi "Ordine di apparizione delle estrazioni: estrazione + recente in alto ed estrazione + remota in basso"
   Scrivi
   For es = EstrazioneFin To Inizio Step - 1
      tempo = Int(tempo + 1)
      'Scrivi
      'Scrivi "Estrazione del " & GetInfoEstrazione(es)
      'Scrivi
      For ruota = ruotavoluta To ruotavoluta
         If ruota = 11 Then
            ruota = 12
         End If
         'Scrivi GetInfoEstrazione(es) & SiglaRuota(PA_) & " - " & StringaEstratti(es,ruota,".")
         Scrivi StringaEstratti(es,ruota,".")
         ScriviFile filearchivioxruotavoluta,StringaEstratti(es,ruota,".")
       
         If ScriptInterrotto Then Exit For
      Next 'x ruota
      If ScriptInterrotto Then Exit For
   Next ' x es
   CloseFileHandle(filearchivioxruotavoluta)
   Call MsgBox("Archivio lotto per la ruota " & NomeRuota(ruotavoluta) & " aggiornato con successo!")
End Sub
 
Ultima modifica:
Ciao Silvix con questo mio scriptino ti puoi ricreare tu e chi vorrà seguirti nello studio... tutte le volte che vuoi l'archivio necessario a quel tipo di analisi... ovvero con l'estrazione più recente in alto e quella più remota in basso. Ovviamente il trange temporale desiderato lo imposti con l'apposita barra in basso di spaziometria. Puoi anche generarlo solo una volta per la ruota o/e le ruote volute e poi aggiornare " a mano " solo l'ultima più in alto... Lo script ti genera un file archivio per la ruota voluta nella stessa cartella dove risiede lo script stesso e con questo nome di default : estrazioni-siglaRuota(ruotavoluta).txt ad esempio estrazioni-BA.txt ecc...

Codice:
Option Explicit
Sub Main
   Dim es
   Dim ruota
   Dim Inizio
   Dim ruotavoluta
   Dim tempo
   Dim Posizionevoluta
   Dim fileestrazionixAIlottoProject
   Dim fc
   Dim fileconfermaazione
   ruotavoluta = ScegliRuota
   Inizio = EstrazioneIni '
   Dim filearchivioxruotavoluta
   filearchivioxruotavoluta = "estrazioni-" & SiglaRuota(ruotavoluta) & ".txt"
   Scrivi
   Scrivi "File " & "estrazioni-" & SiglaRuota(ruotavoluta) & ".txt" & " per la ruota di " & NomeRuota(ruotavoluta) & " aggiornato con successo!"
   Scrivi "All'ultima estrazione della ruota " & NomeRuota(ruotavoluta) & " n. " & GetInfoEstrazione(EstrazioniArchivio)
   Scrivi "Range archivio estrazioni presente nel file " & GetInfoEstrazione(EstrazioneIni) & "-" & GetInfoEstrazione(EstrazioniArchivio)
   Scrivi "Estrazioni presenti nel file: " &(EstrazioniArchivio - EstrazioneIni) + 1
   Scrivi "Ordine di apparizione delle estrazioni: estrazione + recente in alto ed estrazione + remota in basso"
   Scrivi
   For es = EstrazioneFin To Inizio Step - 1
      tempo = Int(tempo + 1)
      'Scrivi
      'Scrivi "Estrazione del " & GetInfoEstrazione(es)
      'Scrivi
      For ruota = ruotavoluta To ruotavoluta
         If ruota = 11 Then
            ruota = 12
         End If
         'Scrivi GetInfoEstrazione(es) & SiglaRuota(PA_) & " - " & StringaEstratti(es,ruota,".")
         Scrivi StringaEstratti(es,ruota,".")
         ScriviFile filearchivioxruotavoluta,StringaEstratti(es,ruota,".")
       
         If ScriptInterrotto Then Exit For
      Next 'x ruota
      If ScriptInterrotto Then Exit For
   Next ' x es
   CloseFileHandle(filearchivioxruotavoluta)
   Call MsgBox("Archivio lotto per la ruota " & NomeRuota(ruotavoluta) & " aggiornato con successo!")
End Sub
Ti ringrazio, buona serata
 
Ciao lotto_tom75 sicuramente sbaglio qualcosa ti spiego: carico estrazioni txt 1 2 3 4 5 converto in binario le 5 colonne ( b1.txt b2.txt b3.txt b4.txt b5.txt)
Controllato ogni b.txt e ci sono degli 0 e dei 1 ma quando carico un file binario e creo un pattern sotto escono 7 zero e nessun 1. Ho impostato come te
1 riga e 7 colonne poi 6 bit e un tot di estrazioni e logicamente poi converti in decimale mi da zero. Domanda cosa sbaglio? Al posto dei 7 zero bisogna inserire manualmente, guardando la prima estrazione in alto della colonna b1.txt o di quella scelta? Spero di essere stato chiaro nella spiegazione. Grazie
 
Ciao lotto_tom75 sicuramente sbaglio qualcosa ti spiego: carico estrazioni txt 1 2 3 4 5 converto in binario le 5 colonne ( b1.txt b2.txt b3.txt b4.txt b5.txt)
Controllato ogni b.txt e ci sono degli 0 e dei 1 ma quando carico un file binario e creo un pattern sotto escono 7 zero e nessun 1. Ho impostato come te
1 riga e 7 colonne poi 6 bit e un tot di estrazioni e logicamente poi converti in decimale mi da zero. Domanda cosa sbaglio? Al posto dei 7 zero bisogna inserire manualmente, guardando la prima estrazione in alto della colonna b1.txt o di quella scelta? Spero di essere stato chiaro nella spiegazione. Grazie

Ci sei quasi 🙂
Puoi analizzare solo un file binario alla volta. Ma prima di caricarlo e' meglio creare e caricare il relativo pattern in questo modo: apri il file binario con notepad ad esempio, guarda la prima riga come e' formata e poi ricostruiscila facendo clic sulle rispettive 7 posizioni di bit. Quando l'hai creato clicca su carica e lo vedrai sotto pronto per essere esaminato.. Lo script e' da ottimizzare anche per l'aspetto del carrello che per adesso non rispetta le posizioni analizzate in modo automatico ma appunto deve essere costruito facendo attenzione diciamo manualmente a mettere i giusti bit nelle giuste sette posizioni da 0 a 6 . Purtroppo al momento.. ogni volta che si sbaglia va svuotato e ricostruito da zero. Buono studio.. e grazie e complimenti per la tua attenzione 🙂
 
Ruota BA prima riga 0111100 analizzate con bit 6 446 estrazioni ( max scaricate) Totale macth 3 zeri 1 unita' 1 questo si legge nello script finale dopo analisi ma converti in decimale mi da' zero.
 
Ruota BA prima riga 0111100 analizzate con bit 6 446 estrazioni ( max scaricate) Totale macth 3 zeri 1 unita' 1 questo si legge nello script finale dopo analisi ma converti in decimale mi da' zero.

ammesso che tu abbia fatto tutto bene questa situazione impossibile di 0 decimale futuro :) è dovuta a questo fatto : quando la corrispondenza non è al 100% per 0 o 1 per una o + posizioni di bit il numero trasformato in decimale può prendere molte "forme" diverse... quindi nel tuo caso.. ho verificato ad esempio che caricando e analizzando le ultime 446 es hai ben due casi con 50% di 0 e 50% di 1 per la 2° e 6° posizione di bit mi pare... il che comporta che oltre alla trasformazione che hai avuto di default per il carrello riempito con tutti gli 0 e quindi corrispondente alla forma decimale 0 ci sono altre "forme" della sequenza bit costruibile con quella analisi. E' per quello che io, come ho scritto sopra ricerco, solo condizioni al 100% di 0 o di 1 per singola posizione di bit... Per avere in sostanza unicità di risultato "decimale reale".

Ad ogni modo riporto qui sotto x te e x chi vorrà seguirti nello studio... un breve e ultra sintetico tutorial... visivo sui 4 step principali per provare questo tipo di analisi non proprio semplicissima.. :)

step 1

step1.jpg

step 2

step2.png

step 3

step3.jpg

step 4

step4.jpg
 
Fatto ora il valore decimale appare, ultima domanda, solo se nei risultati finali allora appare il 100% il valore decimale e' attendibile perche' ho fatto per ora solo due prove e la percentuale finale era in un caso il 78% e 83% nell'altro. Comunque grazie delle tue spiegazioni e in questi giorni faro' senz'altro nuove prove. 👋
 
Fatto ora il valore decimale appare, ultima domanda, solo se nei risultati finali allora appare il 100% il valore decimale e' attendibile perche' ho fatto per ora solo due prove e la percentuale finale era in un caso il 78% e 83% nell'altro. Comunque grazie delle tue spiegazioni e in questi giorni faro' senz'altro nuove prove. 👋

La situazione leggermente e teoricamente + attendibile è quando per un particolare range di analisi (es. ultime 30 estrazioni o ultime 180 estrazioni ecc..) tu trovi per ogni posizione di bit analizzata (da 0 a 6) un valore 0 o 1 al 100% e l'altro a 0 per 1 o più occorrenze. Tutti gli altri casi sono molto meno "robusti" dal punto di vista predittivo.. in quando appunto le posizioni con valori percentuali "ibridi" e non netti... danno luogo a + decimali diversi una volta trasformate... Oltre a trovare il range temporale soddisfacente questa particolare condizione di unicità.. di presenza di bit fai attenzione a controllare "a mano" il riempimento del carrello che appunto ripeto almeno in questa bozza di versione non si auto aggiusta in base alla posizione di bit di ricerca. Ad esempio se tu ricerchi il bit in prima posizione (bit 0) ma lo hai già cercato prima il carrello te lo mostrerà erroneamente in 2° posizione ecc... In questi casi l'unica soluzione è svuotare il carrello e ricominciare la ricerca dalla prima posizione di bit facendo più attenzione a come il carrello viene popolato. Nella prossima versione cercherò di implementare anche questo controllo automatico... 👋🙂 ps: non è un argomento semplice ma se ben compreso potrebbe aprirti interessanti nuove prospettive dinamiche a livello subatomico per così dire 🤪.
 
Ultima modifica:

Ultima estrazione Lotto

  • Estrazione del lotto
    venerdì 03 gennaio 2025
    Bari
    60
    54
    44
    28
    33
    Cagliari
    55
    68
    05
    53
    39
    Firenze
    77
    49
    68
    29
    45
    Genova
    25
    66
    36
    41
    18
    Milano
    83
    47
    32
    71
    09
    Napoli
    75
    60
    78
    69
    11
    Palermo
    55
    54
    67
    29
    25
    Roma
    74
    77
    14
    16
    83
    Torino
    25
    01
    79
    40
    54
    Venezia
    21
    75
    05
    37
    74
    Nazionale
    58
    64
    82
    22
    72
    Estrazione Simbolotto
    Bari
    16
    43
    15
    37
    26
Indietro
Alto