有谁能给我解释一下vb这一段过程是什么意思吗?题目要求生成无重复数的数组,但这个过程我怎么不懂啊?

有谁能给我解释一下vb这一段过程是什么意思吗?题目要求生成无重复数的数组,但这个过程我怎么不懂啊?谢谢啦!... 有谁能给我解释一下vb这一段过程是什么意思吗?题目要求生成无重复数的数组,但这个过程我怎么不懂啊?谢谢啦! 展开
 我来答
Archlen
2013-10-25 · TA获得超过260个赞
知道小有建树答主
回答量:297
采纳率:100%
帮助的人:157万
展开全部

这个程序有问题,我们假设第二个随机数就与第一个相同,此时i=2, j循环里面m = d(1),所以i=2-1=1,next i以后,又从1开始,理论上有无限运行的可能,虽然概率很小。

其次,j<=i,这个是永远都成立的,多此一举。

再者,参数d(),说明引用的是一个动态数组,那么程序运行前应该首先赋值

即在循环前首先

redim d(0)

d(0) = int(rnd * 90) + 10


怎么追加一个数值进数组?貌似没有现成函数。可以Redim 比如redim Preserve 变量(maxnum + 1),这个是保留原有数值增加一个元素,如果忽略Preserve 则原有数据全部清除

后面的程序就可以修改一下

我们添加10个元素,因为已经添加了1个,所以条件是<10

初始化计数变量i=0

Do While i < 10

    m = Int(Rnd * 90) + 10

   '定义一个比对信号

    Dim flag As Boolean
    flag = True

    For j = 0 To UBound(d) '遍历已有的数组,判断是否可以添加
        If m = d(j) Then
            flag = False
            Exit For
        End If
    Next
    If flag = True Then '条件满足,计数器加1,数组长度加1,数组末尾添加新值。
        i = i + 1
        ReDim Preserve d(i)
        d(i) = m
    End If
Loop
百度网友9dea8a2
2013-10-25 · TA获得超过303个赞
知道小有建树答主
回答量:534
采纳率:100%
帮助的人:287万
展开全部
外循环for i=1 to 10,是生成10个这样的随机数
内循环for j=1 to i,是判断生成的m是否是数组里的数字相同,假哪你的数组已经存进了5个数,则就是循环5次分别对应的是d(0),d(1),d(2),d(3),d(4),依次判断这五个数与刚刚生成的m相同与否,只要其中的一个与m同值则重新生成,如果不相同,则m可以放进数组,此时m是存入数组的第6个数d(5),也就是倒数第二行为什么:i=i-1,最后一条语句存入数组
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友90fe1db
2013-10-25
知道答主
回答量:36
采纳率:0%
帮助的人:16.3万
展开全部
生成[10,100)之间的随机数,数组大小是10,其实是没生成一个随机数就遍历数组一遍,如果没有这个数就加入到数组,如果有就退出内循环。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式