Newsgroup: it.hobby.lotto
Titolo: Ambi/Terni + frequenti

Sto' cercando un algoritmo che mi permetta di calcolare
le lunghette più frequenti per ambo in tempi ... ragionevoli.
Con il metodo "normale", cioè eseguendo un controllo
di tutte le formazioni possibili (forza bruta) riesco a calcolare
la sestina + frequente per ambo in meno di un'ora, ma per
le formazioni più lunghe ... niente da fare (anche se ho
già pre-calcolato le frequenze dei 4005 ambi).
Qualcuno ha nel "cassetto" la soluzione di questo problema ?
(La sto' cercando da più di un anno !!)
Grazie.
P.S.:So' che una soluzione più rapida esiste perchè
esistono software in circolazione che riescono ad arrivare
agevolmente alla decina ...
Lorenzo Camprini
lcam...@dada.it

Ciao,
mi dispiace per te, ma credo che la soluzione sia quella che hai gią
menzionato.
Piuttosto, per una frequenza, mi pare tanto l'elaborazione di un'ora...
Sei sicuro di aver ottimizzato l'algoritmo?
Se vuoi un parere puoi spedirmelo e te lo controllo.
Saluti.

 Qualcuno ha nel "cassetto" la soluzione di questo problema ?
Se per trovare la decina piu' frequente basta prendere i primi dieci numeri
con piu' presenze, la stessa cosa dovrebbe valere anche con sestine, sestine
etc.
Hai provato ?
Ciao
Philip dalla ricevitoria che sta a lavora'

Hai ragiose se cerchi la formazione numerica più frequente per ambata...
Ma lui la richiede per ambo.
Ciao.
lottoclub ha scritto nel messaggio ...



Dovrebbe esserla anche per ambo.Questa sera mi metto a fare un po' di prove.
Ciao
Philip

mi dispiace per te, ma credo che la soluzione sia quella che hai già


ad ogni posizione della combinazione in fase di esame.
Il vettore che gestisce gli indici in effetti ti appesantisce e non di poco
l'elaborazione e, quantunque  sia una buona tecnica, non ti conviene
applicarla in una routine così semplice. Io la uso, ma solo quando non posso
sapere che dimensione ha l'array.
In questo caso l'algoritmo conosce già la quantità di elementi da processare
per ogni lunghetta.
Ricorda che, come hai sottolineato, un'algoritmo di calcolo non dovrebbe mai
richiamare funzioni, e, in questo caso, non ce ne veramente bisogno.
Se studi un'algoritmo che non può fare a meno di richiamare una funzione, ti
conviene sempre, anche se poco elegante, scrivere il codice della funzione
in linea, evitando le chiamate; questa è una pratica di ottimizzazione
consueta oltre che rendere di molto più veloce l'elaborazione.
Ritornando al tuo problema, puoi senza difficoltà, racchiudere tutto
l'algoritmo in soli 2 cicli for-next o un loop.
Altro tasto non trascurabile è : da dove reperisci l'archivio?
Scusa per la loquacità.
Ciao.

 writes:
LC> 
LC> Con il metodo  "normale", cioè eseguendo un controllo  di tutte le
LC> formazioni possibili (forza bruta)
come definisci la formazione "più frequente per ambo"?
il primo  metodo alternativo  che mi viene  in mente è,  partire dagli
ambi più frequenti e 'ricostruire' la combinazione complessiva, con un
procedimento simile, anche se opposto, alla riduzione.
LC> riesco  a calcolare la  sestina +  frequente per  ambo in  meno di
LC> un'ora, 
che linguaggio usi?
come calcoli la frequenza di una formazione?
come memorizzi una singola formazione?
Ciao
Marco
-- 
 C++  =  D

 writes:
LC> 
LC> ho  provato  anche  ad   ordinare  preventivamente  i  numeri  per
LC> frequenza  di uscita  (non è  proprio "esatto",  però  permette di
LC> avere  una   risposta  significativa  sin  dai   primi  minuti  di
LC> elaborazione).
questo aiuta solo per avere già qualche risultato sub-ottimo fin dalle
prime fasi dell'elaborazione
LC> costringendomi  pero' ad utilizzare  la ricorsività  (una funzione
LC> che  richiama sè  stessa) ...
argh!!
elimina subito la ricorsione e usa un algoritmo iterativo per generare
le combinazioni.
Ciao
Marco
-- 
A scuola mi esclusero dalla squadra di scacchi a causa della mia statura.
		-- Woody Allen

>Altro tasto non trascurabile è : da dove reperisci l'archivio?
Vi sono fonti migliori di altre ?
ciao

come memorizzi una singola formazione?
Memorizzo le venti formazioni "attualmente" in testa
alla graduatoria, eseguendo un eventuale "inserimento"
di una formazione nella posizione opportuna e conseguente
"shift" delle altre, quando ciň succede (raramente) rivisualizzo
in un controllo di tipo "List" l'intero vettore opportunamente
tradotto in stringhe alfanumeriche, in modo da aver sempre
sott'occhio a che punto sono arrivato.
ciao !
Lorenzo Camprini
lcam...@dada.it

> come memorizzi una singola formazione?
intendevo la  struttura dati: utilizzi un  vettore di N  numeri per le
N-ine, oppure un vettore di 90 bit? le operazioni bit a bit sono molto
veloci,  ma non  so  se il  VB  le supporta.  Sicuramente  si può  con
l'assembler e il C/C++
Ciao
Marco
-- 
Se le tasse continueranno a crescere a questo ritmo, molto presto il
governo avra' un prezzo fuori mercato.