找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5182|回复: 1

[教程源码] 随机获取不重复内容

[复制链接]
  • 打卡等级:武林至尊

1087

主题

2143

回帖

4337

积分

院长

鲜花
9
猫粮
7517
QQ
发表于 2019-1-12 09:19:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
学员3114问题: 如何实现利用数组下标随机, 并且删除获取的随机内容.

一般利用数组功能可以实现万能随机, 也就是不管你想随机取什么内容, 都可以实现, 现在需求多了不重复, 也就意味着每次随机都要针对数组内容进行删除, 按键精灵中删除数组元素的方法是对其赋值为null即可删除, 但是删除后, 下标不会变化, 所以我们还需要让他的下标移动, 具体方法如下:

[按键精灵] 纯文本查看 复制代码
//初始化随机种子, 只要调用一次, 但是这里强烈推荐使用紫猫插件的随机功能
Randomize
Dim 随机数组 = {"aaa", "bbb", "ccc", "ddd", "eee"}

//测试效果, 其实这也是一种洗牌方法, 把随机出来的加入到新数组中, 数组元素顺序就打乱了.
TracePrint 取不重复随机(随机数组)
TracePrint 取不重复随机(随机数组)
TracePrint 取不重复随机(随机数组)
TracePrint 取不重复随机(随机数组)
TracePrint 取不重复随机(随机数组)
TracePrint 取不重复随机(随机数组)


//参数为数组, 返回一个随机到的内容
Function 取不重复随机(数组)
     If Ubound(数组) = -1 then
           TracePrint "数组里没有元素了, 返回null"
           Exit Function
     End If
     Dim 下标 = Random(0, Ubound(数组))
     Dim 随机内容 = 数组(下标)
     //这是一个关键循环, 要把后面元素覆盖前面元素, 实现移动数组元素
     For i = 下标 to Ubound(数组)
           数组(i) = 数组(i+1)
     Next
     取不重复随机 = 随机内容
End Function


//随机获取一个数字函数, 同样强烈推荐使用紫猫插件的随机取数
Function Random(min, max)
      Random = Int((max-min+1)*Rnd()+min)
End Function
楼主热帖

2

主题

18

回帖

22

积分

学前班

鲜花
0
猫粮
31
发表于 2019-1-14 23:02:46 | 显示全部楼层
好东西~之前一直找不到~超赞!!!!!!!!!!!!!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|紫猫编程学园

GMT+8, 2024-12-23 03:35

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表