【问题标题】:Random shuffling of elements in an array between 2 indexes VB.NET在 2 个索引 VB.NET 之间对数组中的元素进行随机洗牌
【发布时间】:2015-04-10 22:29:41
【问题描述】:

我正在尝试在一定数量的索引之间随机播放元素。

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”是最高索引的值。然而,每次我尝试它似乎并没有随机洗牌(它总是按字母顺序出现)。

【问题讨论】:

  • 只是为了澄清我使用的是 ArrayList

标签: vb.net for-loop random arraylist shuffle


【解决方案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,这样您就不会浪费时间尝试将末端与自身交换。我还将 Step 更改为 +1,因为 min

【讨论】:

    【解决方案2】:

    如果min 是最低的,max 是最高的,那么你的循环中不应该有Step -1。这将导致循环永远不会执行。

    【讨论】:

    • 两个非常好的答案 - 对于我的代码,罗斯的解决方案效果更好。删除步骤 -1 后,它就开始执行
    猜你喜欢
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    相关资源
    最近更新 更多