devxlogo

GetRandomArrayItem – Return a random item from an array or collection

GetRandomArrayItem – Return a random item from an array or collection

' Return a random item from a mono/bi/tri-dimensional array or collection' ' Example:'   Dim arr1 As String() = {"this is string 0", "this is string 1",'  '       "this is string 2", "this is string 3", "this is string 4"}'   Dim i As Integer'   For i = 1 To 10'       Debug.WriteLine(GetRandomArrayItem(arr1))'   Next'   Dim arr2 As String(,) = {{"this is string 0-0", "this is string 0-1"},'  '       {"this is string 1-0", "this is string 1-1"},'  '       {"this is string 2-0", "this is string 2-1"},'  '       {"this is string 3-0", "this is string 3-1"},'  '       {"this is string 4-0", "this is string 4-1"}}'   For i = 1 To 10'       Debug.WriteLine(GetRandomArrayItem(arr2))'   Next''   ' print the name of random controls on the form'   For i = 1 To 10'       Debug.WriteLine(DirectCast(GetRandomArrayItem(Me.Controls),'  Control).Name)'   NextFunction GetRandomArrayItem(ByVal coll As ICollection) As Object    Static randGen As New System.Random    ' if this is an array, convert to Array, and handle mono/bi/tri-dimensional     ' arrays    If TypeOf coll Is Array Then        Dim arr As Array = CType(coll, Array)        If arr.Rank = 1 Then            Dim minIndex0 As Integer = arr.GetLowerBound(0)            Dim maxIndex0 As Integer = arr.GetUpperBound(0)            Dim randomIndex0 As Integer = randGen.Next(minIndex0, maxIndex0 + 1)            Return arr(randomIndex0)        ElseIf arr.Rank = 2 Then            Dim minIndex0 As Integer = arr.GetLowerBound(0)            Dim maxIndex0 As Integer = arr.GetUpperBound(0)            Dim randomIndex0 As Integer = randGen.Next(minIndex0, maxIndex0 + 1)            Dim minIndex1 As Integer = arr.GetLowerBound(1)            Dim maxIndex1 As Integer = arr.GetUpperBound(1)            Dim randomIndex1 As Integer = randGen.Next(minIndex1, maxIndex1 + 1)            Return arr(randomindex0, randomIndex1)        ElseIf arr.Rank = 3 Then            Dim minIndex0 As Integer = arr.GetLowerBound(0)            Dim maxIndex0 As Integer = arr.GetUpperBound(0)            Dim randomIndex0 As Integer = randGen.Next(minIndex0, maxIndex0 + 1)            Dim minIndex1 As Integer = arr.GetLowerBound(1)            Dim maxIndex1 As Integer = arr.GetUpperBound(1)            Dim randomIndex1 As Integer = randGen.Next(minIndex1, maxIndex1 + 1)            Dim minIndex2 As Integer = arr.GetLowerBound(2)            Dim maxIndex2 As Integer = arr.GetUpperBound(2)            Dim randomIndex2 As Integer = randGen.Next(minIndex2, maxIndex2 + 1)            Return arr(randomindex0, randomIndex1, randomIndex2)        End If    Else        ' otherwise get a random element from the collection        Dim max As Integer = coll.Count        Dim randomIndex As Integer = randGen.Next(0, max)        Dim list As IList = CType(coll, IList)        Return list.Item(randomIndex)    End IfEnd Function

See also  Professionalism Starts in Your Inbox: Keys to Presenting Your Best Self in Email
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist