VB.NET Code:
Public Function Shuffle(Of T)(ByVal source As IEnumerable(Of T)) As IEnumerable(Of T)
Dim rng As New Random
Dim elements() As T = source.ToArray
Dim i, SwapIndex As Integer
Dim tmp As T
For i = elements.Length - 1 To 1 Step -1
SwapIndex = rng.Next(i + 1)
tmp = elements(i)
elements(i) = elements(SwapIndex)
elements(SwapIndex) = tmp
Next
Return elements
End Function
Sub Test()
Dim ordered() As Integer = {1, 2, 3, 4, 5}
Dim shuffled = Shuffle(ordered)
For Each el In shuffled
Debug.Write(el.ToString + ";")
Next
End Sub