CISA FotoGallery

Statistiche

Tot. visite contenuti : 928195
Home Articoli tecnici Moduli Generare numeri univoci in un intervallo predefinito

Generare numeri univoci in un intervallo predefinito

Questa Funzione genera N=100 Numeri compresi in un intervallo definito da 10000÷20000 evitando la possibilità di Doppioni.


Option Compare Database
Option Explicit

'--------------------------------------------------------------------------
' AUTORE : LOKAR (dal NG I.C.L.V.B.)
'--------------------------------------------------------------------------

Private Sub Form_Load()
    Dim c As Collection
    Dim
v As Variant
    Dim
n As Integer
    Set
c = Draw(10000, 20000, 100)
    n = 1
    For Each v In c
        Debug.Print n & " - " & v
        n = n + 1
    Next v
End Sub

'--------------------------------------------------------------------------
' Questo è il cuore della Funzione, sfrutta una Collection
' d'appoggio che riempie con l'intervallo passato
' quindi recupera in modo Random gli Items eliminandoli
' ogni volta per evitare possibili Doppioni
'--------------------------------------------------------------------------
Private Function Draw(ByVal MinValue As Long, _
                      ByVal MaxValue As Long, _
                      ByVal Draws As Long) As Collection
    Dim
i As Long
    Dim
j As Long
    Dim
Numbers As Collection
    Dim
Drawn As Collection


    Set
Numbers = New Collection
    Set
Drawn = New Collection


    For
i = MinValue To MaxValue
        Call Numbers.Add(i)
    Next i

    Call Randomize(time())

    For j = 1 To Draws
        i = CLng(Rnd() * (Numbers.Count - 1) + 1)
        Call Drawn.Add(Numbers.Item(i))
        Call Numbers.Remove(i)
    Next j
    Set Numbers = Nothing
    Set Draw = Drawn
    Set Drawn = Nothing
End Function