Atlanta Custom Software Development 

 
   Search        Code/Page
 

User Login
Email

Password

 

Forgot the Password?
Services
» Web Development
» Maintenance
» Data Integration/BI
» Information Management
Programming
  Database
Automation
OS/Networking
Graphics
Links
Tools
» Regular Expr Tester
» Free Tools

A For Each statement that visits items in random order

Total Hit ( 2784)

Rate this article:     Poor     Excellent 

 Submit Your Question/Comment about this article

Rating


 


At times you may need to process elements of an array, a collection, or a dictionary object in random order, for example when sampling a population or (more often) when writing a game, such as a card game. Here's a class that you can use in a For Each statement to randomly process all the elements of any data structure that implements the IEnumerable interface:

Click here to copy the following block
Class RandomIterator
  Implements IEnumerable

  ' a low-overhead ArrayList to store references
  Dim items As New ArrayList()

  Sub New(ByVal collection As IEnumerable, ByVal seed As Integer)
    ' load all the items in the ArrayList, but in random order
    Dim rand As New Random(seed)
    Dim o As Object
    For Each o In collection
      Items.Insert(Rand.Next(0, Items.Count + 1), o)
    Next
  End Sub

  Public Function GetEnumerator() As System.Collections.IEnumerator _
    Implements System.Collections.IEnumerable.GetEnumerator
    ' return the enumerator of the inner ArrayList
    Return items.GetEnumerator()
  End Function
End Class

This code shows how you can use the RandomIterator class to randomly process all the elements in a string array, but you can use it with collection and dictionaries alike:

Click here to copy the following block
Dim arr() As String = {"one", "two", "three", "four", "five" }
Dim s As String
' the sequence you obtain depends on the seed you pass as the 2nd argument
For Each s In New RandomIterator(arr, 1234)
  Console.WriteLine(s)
Next

This code produces the following sequence:
three
five
two
four
one



Submitted By : Nayan Patel  (Member Since : 5/26/2004 12:23:06 PM)

Job Description : He is the moderator of this site and currently working as an independent consultant. He works with VB.net/ASP.net, SQL Server and other MS technologies. He is MCSD.net, MCDBA and MCSE. In his free time he likes to watch funny movies and doing oil painting.
View all (893) submissions by this author  (Birth Date : 7/14/1981 )


Home   |  Comment   |  Contact Us   |  Privacy Policy   |  Terms & Conditions   |  BlogsZappySys

© 2008 BinaryWorld LLC. All rights reserved.