加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

VB小程序:生成十个不重复的随机数

发布时间:2020-12-17 08:19:36 所属栏目:百科 来源:网络整理
导读:我们通过随机数函数Rnd结合for循环嵌套来实现生成十个不重复的随机数,代码如下: Option Explicit Dim a(9) As Integer,i As Integer,j As Integer ‘定义数组及循环变量 Dim Temp As Integer ’定义一个临时变量存储生成的随机数 Dim Flag As Boolean ‘定

我们通过随机数函数Rnd结合for循环嵌套来实现生成十个不重复的随机数,代码如下:

Option Explicit
Dim a(9) As Integer,i As Integer,j As Integer ‘定义数组及循环变量
Dim Temp As Integer ’定义一个临时变量存储生成的随机数
Dim Flag As Boolean ‘定义一个布尔型变量来给数组元素做标记

Private Sub Form_Click()

Randomize ’初始化随机数发生器

For i = 0 To 9 ’外循环,用来生成十个随机数和将满足条件的这是个随机数由If条件判断后输出

Temp = Int(Rnd() * 100 + 1) ‘生成一个随机数存放在Temp中
Flag = False ‘假设此时的判定重复标识Flag为False(不重复)

For j = 0 To i - 1 ‘内循环,来筛选外循环生成的随机数是否跟已存入数组的任何一个元素重复
If Temp = a(j) Then

i = i - 1 ‘如果重复,则通过将循环变量减一来退回到上一个循环
Flag = True ‘将重复标识设置为True(重复)
Exit For ‘由于在数组中已经存在这次循环所生成的数,于是放弃这次循环
End If
Next j

If Flag = False Then
a(i) = Temp ‘如果标识便是不重复,那当前的随机数满足条件,将这个数存入数组


If i = 9 Then
Print a(i) & Chr(13) & Chr(10)
Else
Print a(i);
End If ‘这个If选择是我自己设计用来控制输出格式的


End If

Next i

End Sub

这个代码总体的简要思想就是:


由外循环产生随机数,然后进入内循环,判断随机数是否与数组中已有元素重复
如果重复,取消掉该次循环,再次进行内循环;如果不重复,就将这个符合条件的数赋值给对应的数组元素
最后,由外循环将符合条件的数按照格式在窗体上显示出来

以上代码和注释是自己的理解,如果有什么错误或是有需要改进的地方,大家不妨提出来。
PS:这里还推荐一个算法,代码如下:
Option Explicit
Dim a(9) As Integer,j As Integer
Private Sub Form_Click()

For i = 0 To 9
a(i) = Int(Rnd() * 100 + 1)

For j = 0 To i - 1
If a(i) = a(j) Then
i = i - 1
Exit For
End If
Next j

Next i
For j = 0 To 9
If j = 9 Then
Print a(j) & Chr(13) & Chr(10)
Else
Print a(j) & " ";
End If
Next j
End Sub
这个代码是直接把生成的随机数存进数组,然后再比较已经存在于数组中的每一个元素,判断有无相同的;
而上一个算法是产生一个数,判断是否与数组里的元素存在重复现象,再将这个数存入数组。
大家多交流!
13/02/18 19:32 于机房 40号

欢迎访问我的博客:http://151451325.blog.163.com/http://blog.sina.com.cn/tonyliuchen

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读