arrays - 在vba中随机播放数组
问题描述
我需要在没有重复的情况下对数组中的值进行洗牌,我需要在代码中添加什么以避免重复
Function Resample(data_vector)
n = UBound(data_vector)
ReDim shuffled_vector(n)
For i = 1 To n
shuffled_vector(i) = data_vector(WorksheetFunction.RandBetween(1, n))
Next i
End Function
解决方案
这将随机化数组:
Function Resample(data_vector() As Variant) As Variant()
Dim shuffled_vector() As Variant
shuffled_vector = data_vector
Dim i As Long
For i = UBound(shuffled_vector) To LBound(shuffled_vector) Step -1
Dim t As Variant
t = shuffled_vector(i)
Dim j As Long
j = Application.RandBetween(LBound(shuffled_vector), UBound(shuffled_vector))
shuffled_vector(i) = shuffled_vector(j)
shuffled_vector(j) = t
Next i
Resample = shuffled_vector
End Function
你可以这样调用:
Sub try()
Dim x() As Variant
x = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 0)
x = Resample(x)
MsgBox Join(x, ",")
End Sub
推荐阅读
- reactjs - 反应路由器开关与
.. 块(带有道具的组件)无法读取带有“props.match.params”的 URL 参数 - python - 如何通过 numba 用第三方库 jit 一个 python 代码?
- django - StaticLiveServerTestCase 服务器错误 500
- sql-server - 创建 Django 数据库模型时的排序规则错误
- javascript - 如何在具有不同变量的javascript中重用函数
- javascript - 如何使用 React Hooks 指示请求正在加载,然后在请求完成后更改 UI?
- python - 在 python 中确定 mapreduce 作业中的数据重用
- kotlin - Kotlin 脚本找不到 Ktor CIO 类
- google-assistant-sdk - SynonymType.entities 的映射是什么样的?
- c# - 更新现有孩子而不是添加新孩子