搜索
首页 电脑/网络 程序设计 VB

这道题怎么做?

  请问这道题该怎么做:用随机函数产生10个20~100之间的不同整数,然后按从大到小的顺序排序输出。我设计了以下的代码Private Sub Form_click()Dim a(1 To 100) As IntegerDim i As Integer, j As Integer, t As IntegerFor i = 1 To 10a(i)=Int((100-20+1)*Rnd+20)Next iFor i = 1 To 9For j = i + 1 To 10If a(i) = a(j) Thena(i)=Int((100-20+1)*Rnd+20)End IfNext jNext iFor i = 1 To 9For j = i + 1 To 10If a(i) < a(j) Thent = a(i)a(i) = a(j)a(j) = tEnd IfNext jNext iFor i = 1 To 10Print a(i)Next iEnd Sub但不知道正确的答案是什么,我刚开始学vb,请高手们帮忙分析是否正确,另外能否给一段简单一些的代码来做这道题。
  前面也有问随机函数题的,但看不懂,请高手们一定帮忙!。

全部回答

2005-07-16

0 0
    在检验两个数相等并重新取值的部分设计思想有误,重新取值后仍有可能有相等的数值! 在下面修改过的程序中,如果比较两个值相等,则从头开始判断,直到所有的数值都通过检验: for i= 1 to 9 for j=i+1 to 10 If a(i) = a(j) Then a(i)=Int((100-20+1)*Rnd+20) i=1 j=2 End If Next j Next i 当然以上并不是一个“最合理”/"最快"的思路,比较好的思路是 随机产生一个数,和已有的数进行比较,直到不相等为止: a(1)= 21+int(80*rnd) for i= 2 to 10 a(i)= 21+int(80*rnd) for j= 1 to i-1 if a(i)=a(j) then a(i)= 21+int(80*rnd) j=1 end if next j next i 更进一步,可以把排序放在这部分同时进行。
     现在是20个数据,如果是大量的数据,比如在10000个数据以上,更好的算法是用随机步数(填空)法,避免大量的重复计算。

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
VB
程序设计
电脑装机
操作系统/系统故障
硬件
笔记本电脑
百度
互联网
反病毒
软件
程序设计
VB
数据库
C/C++
JAVA相关
C#/.NET
VC++
汇编语言
其他编程语言
VB
VB
举报
举报原因(必选):
取消确定举报