我正在尝试在一定数量的索引之间混洗元素。
Dim rng As New Random()
For placeHolder As Integer = min To max Step -1
Dim swapIndex As Integer = rng.Next(min, max)
Dim temp As Object = myList(placeHolder)
myList(placeHolder) = myList(swapIndex)
myList(swapIndex) = temp
Next
其中'min'是最低索引的值,'max'是最高索引的值。然而,每次我尝试它似乎都没有随机洗牌(它总是按字母顺序排列)。
答案 0 :(得分:1)
试试这个:
Dim rng As New Random()
For placeHolder as Integer = min To max-1 Step 1
Dim swapIndex as Integer = rng.Next(placeHolder +1, max)
Dim temp as Object = myList(placeHolder)
myList(placeHolder) = myList(swapIndex)
myList(swapIndex) = temp
Next
变化? 我将最大值更改为比最终值小1,这样您就不会浪费时间尝试将结束与自身交换。我还将步骤改为+1,因为min<最多来自您的描述。我将最小随机值更改为占位符+ 1,因为我不想重新交换我已经交换的内容。最后一次更改是可选的。
答案 1 :(得分:0)
如果min
最低且max
最高,则您的循环中不应包含Step -1
。这将导致循环永远不会执行。