arrays - 如何创建带有随机数的数组?

标签 arrays vba excel random

我是新来的。我想创建一个包含 16 个元素的数组。假设我的数组是 ReDim arr(15) as Integer 并且在该数组中我想将数字从 1 放入 16 但加扰,例如 arr(0) = 3、arr(5) = 8 等等。

最佳答案

试试这个:

Sub MAIN()
   Dim ary(1 To 16) As Variant
   Dim i As Long, msg As String

   For i = 1 To 16
      ary(i) = i
   Next i

   Call Shuffle(ary)

   msg = ""
   For i = 1 To 16
      msg = msg & vbCrLf & ary(i)
   Next i
   MsgBox msg
End Sub

Sub Shuffle(InOut() As Variant)
    Dim HowMany As Long, i As Long, J As Long
    Dim tempF As Double, temp As Variant

    Hi = UBound(InOut)
    Low = LBound(InOut)
    ReDim Helper(Low To Hi) As Double
    Randomize

    For i = Low To Hi
        Helper(i) = Rnd
    Next i


    J = (Hi - Low + 1) \ 2
    Do While J > 0
        For i = Low To Hi - J
          If Helper(i) > Helper(i + J) Then
            tempF = Helper(i)
            Helper(i) = Helper(i + J)
            Helper(i + J) = tempF
            temp = InOut(i)
            InOut(i) = InOut(i + J)
            InOut(i + J) = temp
          End If
        Next i
        For i = Hi - J To Low Step -1
          If Helper(i) > Helper(i + J) Then
            tempF = Helper(i)
            Helper(i) = Helper(i + J)
            Helper(i + J) = tempF
            temp = InOut(i)
            InOut(i) = InOut(i + J)
            InOut(i + J) = temp
          End If
        Next i
        J = J \ 2
    Loop
End Sub

enter image description here

关于arrays - 如何创建带有随机数的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33534263/

相关文章:

java excel读取一列

vba - 在 Excel 文件夹内的所有文件上添加一列

PHP 填充多维关联数组 - 最简单的方法

javascript - 动态更新 JavaScript 数组

vba - 过滤 2 个不相等的通配符。可能的?

vba - 将变量传递给函数并返回 VBA

java - 如何从 Java 将多个参数传递到 .vbs 文件

mysql - 如何在 nodejs 中使用 promise 执行两个 mysql 查询?

arrays - 比较两个数组,删除匹配的项目

excel - 检测(在 VBA 中)包含 Excel 实例的窗口何时变为事件状态