Mit*_*eat 13
请参阅:Fisher-Yates shuffle:
public static void shuffle (int[] array)
{
Random rng = new Random(); // i.e., java.util.Random.
int n = array.length; // The number of items left to shuffle (loop invariant).
while (n > 1)
{
n--; // n is now the last pertinent index
int k = rng.nextInt(n + 1); // 0 <= k <= n.
int tmp = array[k];
array[k] = array[n];
array[n] = tmp;
}
}
Run Code Online (Sandbox Code Playgroud)
看到这个问题被标记为VB/VB.Net ......这是Mitch回答的VB实现.
Public Class Utils
Public Shared Sub ShuffleArray(ByVal items() As Integer)
Dim ptr As Integer
Dim alt As Integer
Dim tmp As Integer
Dim rnd As New Random()
ptr = items.Length
Do While ptr > 1
ptr -= 1
alt = rnd.Next(ptr - 1)
tmp = items(alt)
items(alt) = items(ptr)
items(ptr) = tmp
Loop
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6043 次 |
| 最近记录: |