有谁能给我解释一下vb这一段过程是什么意思吗?题目要求生成无重复数的数组,但这个过程我怎么不懂啊?
有谁能给我解释一下vb这一段过程是什么意思吗?题目要求生成无重复数的数组,但这个过程我怎么不懂啊?谢谢啦!...
有谁能给我解释一下vb这一段过程是什么意思吗?题目要求生成无重复数的数组,但这个过程我怎么不懂啊?谢谢啦!
展开
3个回答
展开全部
这个程序有问题,我们假设第二个随机数就与第一个相同,此时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
展开全部
外循环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,最后一条语句存入数组
内循环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,最后一条语句存入数组
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
生成[10,100)之间的随机数,数组大小是10,其实是没生成一个随机数就遍历数组一遍,如果没有这个数就加入到数组,如果有就退出内循环。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询