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

前端之家收集整理的这篇文章主要介绍了VB小程序:生成十个不重复的随机数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我们通过随机函数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

原文链接:https://www.f2er.com/vb/259191.html

猜你在找的VB相关文章