ArrayShuffle - Shuffling the elements of an array of any type
' Shuffle the elements of an array of any type
'
' Example:
' Dim arr As Integer() = {3, 7, 8, 2, 0, 9}
' ArrayShuffle(arr)
' Dim o As Object
' For Each o In arr
' Debug.Write(o & " ")
' Next
' Debug.WriteLine("")
Sub ArrayShuffle(ByVal arr As Array)
Dim i, newIndex As Integer
Dim tmpValue As Object
Dim rand As New Random
Dim first As Integer = arr.GetLowerBound(0)
Dim last As Integer = arr.GetUpperBound(0)
For i = last To first + 1 Step -1
' evaluate a random index for the current item
newIndex = first + rand.Next(i + 1)
' swap the two items
tmpValue = arr(i)
arr(i) = arr(newIndex)
arr(newIndex) = tmpValue
Next
End Sub