打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VBA基础入门(49)35选7该怎么选?(2)

 


1

上期回顾

有朋友提醒我代码有问题的地方,不知道还有其他人看出来么?

  • 这个能出现重复的随机数

  • +一句randomize

2

Randomize 语句

上期分享RND的时候,讲到如果RND省略参数,那么它将系统时间作为种子来生成随机数。这个Randomize 的作用就是初始化随机数生成器。

示例

此示例使用 Randomize 语句初始化随机数生成器。由于省略了 number 参数,因此 Randomize 使用函数的返回值 Timer 作为新的种子值。


' 初始化随机数生成器Randomize()'生成1-6之间的随机数Dim value As Integer = CInt(Int((6 * Rnd()) + 1))

【注解】
此方法的重载不 Randomize 采用种子值。相反,系统计时器返回的值将用作新的种子值。
如果 Randomize 未使用,则 Rnd 没有) 参数的函数 (在第一次调用时将使用与种子相同的数字,并且随后使用最后生成的数字作为种子值。

接下来说说怎么避免重复这个事情,因为涉及取整,所以很有可能生成重复的随机数

只需要check一下这个随机数出没出现过就可以了,定义一个数组,用于存放这个随机数出没出现过的信息。

【代码】
Sub Randomizing()   Dim MaxNum As Long   Dim flg() As Boolean   Dim num As Long   Dim i As Long   Dim Number() As Long
MaxNum = 10 '←最大值
ReDim Number(1 To MaxNum) As Long ReDim flg(1 To MaxNum) As Boolean
Randomize
For i = 1 To MaxNum
Do num = Int(Rnd * MaxNum) + 1         ' 如果这个随机数没出现过就会放到Number里面,         ' 如果出现了则生成心得随机数,知道不重复为止 If flg(num) = False Then flg(num) = True Number(i) = num Exit Do End If Loop
Next i
For j = 1 To MaxNum Cells(j, 1).Value = Number(j) Next
End Sub



本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VBA编程实现不重复随机数输出
vbs Randomize用法详解
在VB中产生随机数的代码
rnd 随机数
VBScript Rnd 函数
使用ASP产生随机数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服