excel - 从整数数组中删除元素
问题描述
我正在尝试使用数组模拟多甲板绘图。发完第一张牌后,如何从牌组数组中删除这个随机数(“p1”),这样我就可以拥有一个包含 51 个元素的数组而无需选择第一个元素?
到目前为止我就是这样做的
Dim deck(1 To 52) As Variant
Dim p1 As Integer
For i = 1 To 52
deck(i) = i
Next
p1 = Int((UBound(deck) * Rnd) + 1)
解决方案
根据我的评论,这里有一个关于如何ArrayList
为此目的使用 an 的示例:
Sub preflop()
Dim arr As Object: Set arr = CreateObject("System.Collections.ArrayList")
Dim item As Variant, ResultArr As Variant
Dim i As Long, p1 As Long
With arr
'Load all variables
For i = 1 To 52
.Add i
Next i
'Get random number
p1 = ((.Count - 1) - 1) * Rnd
'Remove the random card from the deck
.Remove (p1)
'To use an array in further code somewhere
ResultArr = .Toarray
End With
End Sub
AFAIK 使用ArrayList
更多本机Collection
将打开使用方法的方法,例如Toarray
将 arrayList 导出到数组而无需昂贵的Redim
循环。
如果您不需要以数组结尾,则不妨使用该Collection
方法。
推荐阅读
- heroku - 如何从源代码在 heroku 上安装 poppler?
- javascript - 如何从 openGeocoder res 数据中访问数据?
- path - 我需要将我的 Maxima 安装位置添加到 TeXmacs 看到的 PATH 环境变量中。谁能帮我?
- spring - 如果findById返回null或找不到它,Spring boot如何返回Json?
- javascript - 避免用户在支付页面触摸 HTML 或 JS
- sql - 通过 SQL Server 中的动态查询插入用户定义的表类型?
- sql - 在 SQL 中从不相关的表中查询数据
- vue.js - Vue:Vue 3 从插槽迁移到 v-slot
- flutter - 在 bloc 构造函数中调用超级构造函数后调用函数
- arrays - 从绑定的谷歌应用脚本中的电子表格中获取特定的行值(或值)