[AccessD] Random numbers lottery-style

Heenan, Lambert Lambert.Heenan at AIG.com
Thu Mar 3 15:36:26 CST 2005


Ok. If you'd prefer to use a collection instead of an array....

Function GetRandomCol(nNumberOfSelections As Long, nSelectFrom As Long) As
Collection
Dim c As New Collection
Dim n As Long
Dim nHits As Long
Dim nRnd As Long
Dim bHit As Boolean
 
  nHits = 0
   Randomize

   While nHits < nNumberOfSelections
      nRnd = Int(Rnd() * nSelectFrom)
      bHit = False
      
      For n = 1 To c.Count
         If c.Item(n) = nRnd Then
            bHit = True
            Exit For
         End If
      Next n
      If bHit = False Then
         c.Add nRnd  ' no need for a Key here as we will use the item()
array to get at our members
         nHits = nHits + 1
      End If
   Wend
   Set GetRandomCol = c
   
End Function

Sub testRndColl()
Dim c As Collection
Dim n As Long

   Set c = GetRandomCol(5, 29)
    For n = 1 To c.Count
      Debug.Print c.Item(n) & ", ";
   Next n
   Debug.Print
End Sub

Lambert

> -----Original Message-----
> From:	accessd-bounces at databaseadvisors.com
> [SMTP:accessd-bounces at databaseadvisors.com] On Behalf Of Steve Erbach
> Sent:	Thursday, March 03, 2005 3:18 PM
> To:	Access Developers discussion and problem solving
> Subject:	Re: [AccessD] Random numbers lottery-style
> 
> According to the documentation for the Remove method of a Collection,
> the index of the collection is, indeed, renumbered. That just might
> fill the bill. Thanks, Jim.
> 
> Steve Erbach
> 
> 
> On Thu, 3 Mar 2005 14:03:11 -0600, Steve Erbach <erbachs at gmail.com> wrote:
> > JIm,
> > 
> > I'd forgotten about collections. So, lets say we have a collection like
> thise:
> > 
> > col(1) = 16
> > col(2) = 18
> > col(3) = 27
> > col(4) = 29
> > ...
> > col(29) = 147
> > 
> > So we generate a random number from 1 to 29 and zoom in on that index
> > in the collecition. If the selected number is 4 then I pick col(4) and
> > then remove that item from the collection for the next go round.
> > 
> > But how, then, do I pick the Nth collection item if the indexes are
> > non-continguous? Or does the collection re-index itself after removing
> > an item?
> > 
> > Steve Erbach
> >
> -- 
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com



More information about the AccessD mailing list