Frequenza max Lotto

di il
11 risposte

Frequenza max Lotto

Premetto che non programmo in C++ ma in un altro linguaggio che poi il compilatore traduce in Borland c++

io ho un problema per calcolare la frequenza massima di un numero al lotto
il problema non è dato dalla funzione ma dai record che deve passare mettendoci un sacco di tempo
Mi hanno detto di farlo in c++ che forse è più veloce ma io ci capisco poco in c++


l'archivio di 10085 records è in formato Dbf ma potrei trasformarlo anche in semplice ascii (csv o altro formato)
la frequenza se vogliamo è stupida come funzione cioè se io ho un numero devo controllare e contare quante volte è uscita nella ruota relativa esempio

Numero da trovare 42 Ruota di Bari devo trovare quante volte dal 1871 è uscito anche se statisticamente si usa il 1946 l'estrazione è continua tranne la ruota nazionale.

aData è un array fisico dell'archivio
numero è il numero da trovare
nPos è la posizione
l'archivo è formata da

Numrecord, conc,data, BA1, ba2,ba3,ba4,ba5 .....fino a NZ5

avevo fatto questa funzione ma è lenta per trovare 55 frequenze numeri ( i numeri di ogni estrazione) impiega per 46/50 secondi

Function freq( aData, numero, npos )
local nCount := 0
nPos += 3 // perchè i primi 3 campi ci sono altri dati non interessati alla ricerca
AEval( aData, { |a| If( a[ nPos ] == numero .or. ;
a[ nPos +1] == numero .or. ;
a[ nPos +2] == numero .or. ;
a[ nPos +3] == numero .or. ;
a[ nPos +4] == numero .or. , nCount++, nil ) } )
return nCount

a chi mi puo' aiutare invio archivio nel formato che desidera via wetransfer perchè è grandicello

grazie a chi mi puo' aiutare

11 Risposte

  • Re: Frequenza max Lotto

    10085 record sono una pulce/un microbo, rispetto alla potenza di calcolo anche per il piu' ""scarso"" dei computer di 10 anni fa (ma anche di 20 ).

    Sarebbe un'altro discorso se il numero dei record fosse 10 MILIONI o (meglio) 10 MILIARDI (piu' sui miliardi che sui milioni )

    Quindi, il problema NON E' usare il C++, ma capire PERCHE' sta cosi' tanto tempo.
    Cioe' l'ALGORITMO usato.

    Considerazioni generali:

    1) convertire le stringhe in numeri.
    NON HA SENSO convertire la STESSA stringa nello STESSO numero MIGLIAIA e MIGLIAIA di volte.

    2) NON HA SENSO scandire lo stesso file piu' di UNA volta.
    Il tutto DEVE ESSERE FATTO in un'UNICO passaggio (nel qual caso il punto 1) diventa ininfluente).

    3) l'altro ""trucco"" e' CONVERTIRE i file in un formato ""piu' gestibile"" (CSV o quant'altro) in cui si applica direttamente il punto 1).

    Probabilmente quello che ti manca e' la conoscenza di ""struttre dati"" ALTERNATIVE alla SEQUENZA/LISTA.

    Esiste il DIZIONARIO/MAPPA/ARRAY ASSOCIATIVO (sono tutti sinonimi) fatto apposta per questo tipo di lavori.

    https://it.wikipedia.org/wiki/Array_associativ

    Spannometricamente, il tempo per fare quello che hai descritto dovrebbe essere inferiore al secondo.
    Diciamo, per stare sull'abbondante, qualche manciata di secondi (piu' granelli che sassi ).
  • Re: Frequenza max Lotto

    La frequenza sarà 1/90 o giù di lì a meno di estrazioni truccate sistematicamente. Risparmiati i calcoli
  • Re: Frequenza max Lotto

    Ok ho corretto l'array adesso funziona ed è velocissimo, grazie lo stesso

  • Re: Frequenza max Lotto

    Weierstrass ha scritto:


    La frequenza sarà 1/90 o giù di lì a meno di estrazioni truccate sistematicamente. Risparmiati i calcoli
    Perché 1/90? La probabilità che esca un determinato numero su una certa ruota non dovrebbe essere 5/90=1/18?
    Detto ciò, il numero di uscite di un determinato numero su una certa ruota, su un totale di 10085 estrazioni, si dovrebbe assestare sulle 10085/18=560 volte.


    EDIT:
    @silvio.falconi tutti quei valori così lontani da 560 mi sembrano un po' strani.
  • Re: Frequenza max Lotto

    Nel frattempo el estrazioni sono diventate 10087
    e poi ho controllato su un altro programma di uno + esperto di me ed è uguale
    come si arriva a 1/18 ?
  • Re: Frequenza max Lotto

    Come ti hanno detto su

    http://www.pierotofy.it/pages/extras/forum/2/1067999-calcolare_la_frequenza_di_un_numero_lotto/

    non ha senso fare questi calcoli con il gioco del lotto
  • Re: Frequenza max Lotto

    silvio.falconi ha scritto:


    Nel frattempo el estrazioni sono diventate 10087
    e poi ho controllato su un altro programma di uno + esperto di me ed è uguale
    10085 o 10087 cambia poco!
    In ogni caso i valori riportati su questo sito sembrano darmi ragione: https://www.xamig.com/lotto/ruota-di-napoli/statistiche-numeri.php

    silvio.falconi ha scritto:


    come si arriva a 1/18 ?
    Come scritto sopra: 5/90=1/18.
  • Re: Frequenza max Lotto

    Corretto, un novantesimo sulla prima estrazione non sul lotto. Ma il senso era che è un programma inutile
  • Re: Frequenza max Lotto

    Concordo con weierstrass. Codice inutile.

    La probabilità è 1/18 per ogni singola estrazione. Sbagliato cercare collegamenti tra varie estrazioni o anche tra ruote diverse della stessa estrazione.
    Solo un modo per fare arricchire lo Stato e rovinare chi gioca.
  • Re: Frequenza max Lotto

    Io ci andrei cauto nello scoraggiare il gioco d'azzardo... stiamo parlando di entrate fiscali per lo Stato di parecchi miliardi di euri... va a finire che dopo devono trovare il modo di farli uscire da qualche altra parte quei soldi!
    Ovviamente scherzo (ma non troppo)!

    In ogni caso, al di là della questione moralistica, voglio ribadire all'OP che quei numeri così diversi da 560 sono secondo me sbagliati.
  • Re: Frequenza max Lotto

    Per lo Stato aumentano le spese sanitarie per le ludopatie, dunque il bilancio finalr sarebbe da valutare... un po' come per le sigarette
Devi accedere o registrarti per scrivere nel forum
11 risposte