Moderatori: Anthony47, Flash30005
No, le possibili cinquine sono sempre 1.221.759Per ogni linea, disponendo al max. di 45 numeri, otterro' 1.221.759 combinazioni in cinquina.
Moltiplicando questo valore per 120, ottengo : 146.611.080 combinazioni in cinquina !!!!
Anthony47 ha scritto:No, le possibili cinquine sono sempre 1.221.759Per ogni linea, disponendo al max. di 45 numeri, otterro' 1.221.759 combinazioni in cinquina.
Moltiplicando questo valore per 120, ottengo : 146.611.080 combinazioni in cinquina !!!!
Anthony47 sono 1.121.759 per 1 singola riga composta da 45 numeri.
Pero' le 120 righe, contengono stringhe da 45 numeri, diverse l' una dall' altra.
Ecco perche' il calcolo, va visto nel complessivo (cioe' guardando le presenze delle cinquine, nelle 146,611.080 combinazioni).
Il tuo ragionamento e' logico e matematico, valutando 1 sola riga.
Mettendone assieme 120 con contenuti diversi, come faccio ?
L' obiettivo da parte mia e' quello di avere un contatore delle presenze (in cinquina), di tutte quelle che verranno a formarsi.
Comunque il processo e' lineare:
a)esaminare le cinquine presenti nelle estrazioni (sono estrazioni?)
No non sono le semplici estrazioni, bensi' numeri chiamati "superfrequenti", che ricavo ad ogni estrazione e che cambiano ogni volta.
b)contare per ognuna quante volte si e' presentata
c)marcare quelle che hanno avuto piu' estrazioni della soglia
Ripetere per il quadro B
Quale sia l'algoritmo migliore per il task a, il piu' pesante, dipende da come sono organizzati i dati di partenza; a occhio penserei a una matrice a 5 dimensioni oppure a un "dizionario". I dettagli poi condizioneranno la velocita' di esecuzione.
Ciao
Anthony47 ha scritto:Devo dedurre che la domanda iniziale non era Questo progetto si puo' realizzare? ma Questo progetto me lo potete realizzare?![]()
che e' un po' contrario al concetto di forum che insegna e aiuta a fare.
Per capire meglio che aiuto si puo' dare sarebbe bene che condividi un file con le famose tabelle da 120*45, che ancora non ho capito cosa rappresentano. Le immagini aiutano poco.
Sub FNelsColl()
Dim AColl As New Collection, myArrC() As Integer, aInd As Long
Dim myDic As Object, myK As String
Dim WArr, OArr() As String, PassOn As Boolean
Dim LastA As Long, myTim As Single, oInd As Long
Dim I As Long, J As Long, K As Long, L As Long, M As Long
Dim wTmp As Long, H As Long
'
Sheets("Foglio4").Select
LastA = Cells(Rows.Count, "A").End(xlUp).Row
ReDim myArrC(1 To 1000)
If LastA > 10 Then LastA = 30 '<<< Solo per prove
WArr = Range("A2").Resize(LastA, 45).Value
ReDim OArr(1 To 2, 1 To 1000)
myTim = Timer
sep = "#"
Thresh = 6 '<<< La soglia di report
'Set myDic = CreateObject("Scripting.Dictionary")
'
'Ordina in bubblesort la matrice dei dati:
For H = 1 To UBound(WArr)
For I = 1 To UBound(WArr, 2) - 1
For J = I + 1 To UBound(WArr, 2)
If WArr(H, J) = "" Then Exit For
If WArr(H, I) > WArr(H, J) Then
wTmp = WArr(H, I)
WArr(H, I) = WArr(H, J)
WArr(H, J) = wTmp
End If
Next J
Next I
Next H
'Sheets("Foglio3").Range("A1").Resize(UBound(WArr), UBound(WArr, 2)).Value = WArr
'
For H = 1 To UBound(WArr)
For I = 1 To 41
vi = WArr(H, I) & sep
If vi = "" Then Stop: Exit For
For J = I + 1 To 42
vj = vi & WArr(H, J) & sep
For K = J + 1 To 43
vk = vj & WArr(H, K) & sep
For L = K + 1 To 44
vl = vk & WArr(H, L) & sep
For M = L + 1 To 45
If WArr(H, M) = "" Then
Exit For
End If
myK = vl & WArr(H, M)
'Scrive la chiave:
Err.Clear
On Error Resume Next
scrvar = AColl.Item(myK)
errNum = CLng(Err.Number)
On Error GoTo 0
If errNum = 5 Then 'missing...
kcnt = kcnt + 1
aInd = aInd + 1
If aInd > UBound(myArrC) Then
ReDim Preserve myArrC(1 To aInd + 9999)
End If
AColl.Add aInd, myK
myArrC(aInd) = 1
Else
'conta in myarrc le occorrenze
kcnt2 = kcnt2 + 1
myArrC(scrvar) = myArrC(scrvar) + 1
If myArrC(scrvar) = Thresh Then
'memorizza le chiavi che arrivano alla soglia:
oInd = oInd + 1
If oInd > 64000 Then
MsgBox ("Interrotto perchè oltre 64mila risultati")
GoTo ExitA
End If
If oInd > UBound(OArr, 2) Then
ReDim Preserve OArr(1 To 2, 1 To UBound(OArr, 2) + 2000)
Debug.Print "Preserve2 ", oInd, myArrC(scrvar), myK, UBound(myArrC)
End If
OArr(1, oInd) = myK
End If
End If
Next M
Next L
Next K
DoEvents
Next J
DoEvents
' Debug.Print H & "-" & I, Format(Timer - myTim, "0.000"), kcnt, kcnt2
Next I
DoEvents
Debug.Print H, Format(Timer - myTim, "0.00"), kcnt, kcnt2
Next H
ExitA:
Debug.Print "End", kcnt + kcnt2, Format(Timer - myTim, "0.000")
'popola oArr con le occorrenze:
For I = 1 To oInd - 1
scrvar = AColl.Item(OArr(1, I))
OArr(2, I) = myArrC(scrvar) ' myDic.Item(OArr(1, I))
Next I
'Stop
'Scrive i risultati:
Sheets("Foglio3").Range("A:B").ClearContents
Sheets("Foglio3").Range("A1").Resize(oInd - 1, 2).Value = Application.WorksheetFunction.Transpose(OArr)
End Sub
If oInd > 1 Then
Sheets("Foglio3").Range("A1").Resize(oInd - 1, 2).Value = Application.WorksheetFunction.Transpose(OArr)
End If
Call MacroRegistrata
Anthony47 ha scritto:Con 3 righe puoi avere tutti i 44milioni di cinquine possibili con 90 numeri, quindi con soglia pari a 2 non mi meraviglia che superi le 64mila combinazioni trovate...
Eh, posso solo dire che su questo hai ragione...Ciao Anthony47,
[...]
Ognuna delle 3 linee, puo' generare solo 1.221.759 cinquine.
3 linee non potranno mai generare l' integrale di 44 milioni di cinquine possibili, proprio perche' sono raggruppate in stringhe limitanti a 45 numeri ognuna.
Torna a Applicazioni Office Windows
cosa posso fare si resetta sempre il pc con questo errore Autore: mp420 |
Forum: Software Windows Risposte: 1 |
Classi e radici quadrate applicate ai 90 numeri del lotto. Autore: nelson1331 |
Forum: Applicazioni Office Windows Risposte: 8 |
cercare e prelevare 128 estraz del lotto Autore: raimea |
Forum: Applicazioni Office Windows Risposte: 6 |
Visitano il forum: Nessuno e 75 ospiti