微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VB中产生10个不重复的随机数

前几天听了米老师的课,才知道自己真的是学得都是似懂非懂,“一桶水不满,半桶水晃荡”这个比喻是最恰当不过了。

米老师经常告诉我们说要脚踏实地地学习,那何为脚踏实地呢?我的理解是把你在哪一方面不懂的知识学会就是脚踏实地,就比如说用VB产生10随机数,我们看着好像会了,但没有真正地去实现过;或者说我们已经实现了,但没有去总结,当真正要用到的时候,却摸不着头脑,不知如何去做。

VB编程语言来产生10个不重复的随机数,有两种方法

下面分别用VB编程来实现这一过程:

【一】

Dim a(9) As Integer,i As Integer,j As Integer '定义数组及循环变量
Dim temp As Integer '定义一个临时变量存储生成随机数
Dim flag As Integer '定义一个变量来给数组元素做标记
 
Private Sub Form_Click()
    Randomize '初始化随机数发生器
    For i = 0 To 9 '外循环,用来生成10个随机数和将满足条件的这10个随机数由if条件判断输出
        temp = Int(Rnd * 100 + 1) '生成一个0~100中的随机数存放在temp中
 
        flag = False '假设此时的重复标识为false(不重复)
        For j = 0 To i - 1 '内循环,用来筛选外循环生成随机数是否和已存入数组的任何一个元素重复
            If temp = a(j) Then
                i = i - 1 '如果重复,则通过将循环变量减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
        End If
    Next i
End Sub


这段编程的简要思想是:

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

【二】

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)
        Else
            Print a(j),End If
    Next j
End Sub

这个编程是直接把生成随机数存进数组,然后再进行比较已经存在于数组中的每一个元素,判断有无相同的;而上一个算法是产生一个数,判断是否与数组里的元素存在重复现象,再将这个数存入数组。

当然,如果想生成更小或更大的随机数,则需要通过表达式实现,因为rnd函数产生的是【0,1)区间内的Single类型数据。如:

生成0x)区间的随机Singler类型数据,使用表达式rnd*x;

生成mn)区间的随机Singler类型数据,使用表达式m+rnd*(n-m)

生成mn】区间的随机整数,使用表达式m+int(rnd*(n-m+1))

之前也曾经做过这样的题,但太久没有做又不会了,这是什么原因呢?我想都是没有好好总结、没有脚踏实地地去做好每一件事情的原因。虽然当时照着源代码敲能实现出来,但没有自己去想、去实践,这都是自欺欺人的后果,还有待改善。

原文地址:https://www.jb51.cc/vb/258823.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐