 |
实现的方法有很多,下面只是一种。先建立一组标志,如果选中了就设置为1。每次选数时,先判断标志是否为1,如果不为1,则选中,否则忽略选择下一个。下面是例子:
Dim n(1 To 370), i, j, q
For i = 1 To 370
n(i) = 0
Next
j = 0
Randomize Timer
While j < 10
q = Int(Rnd(1) * 369 + 1)
If n(q) = 0 Then
Print q
n(q) = 1
j = j + 1
End If
Wend
孙向斐又问:
我想让1到370个数字在窗体内不停的快速循环显示,一按下停止按钮或按下回车键就停止显示,应如何做。最好能和以上程序结合起来。谢谢!
回答:可以建立两个按钮,Command1和Command2,其中Command1是开始按钮,Command2是结束按钮。再加上Label1。
Dim bStop As Boolean
Dim n(1 To 370), i, j, q
Private Sub Command1_Click()
Command1.Visible = False
Randomize Timer
While j < 10
q = Int(Rnd(1) * 369 + 1)
Label1.Caption = q: DoEvents
If n(q) = 0 And bStop = True Then
Print q
n(q) = 1
j = j + 1
bStop = False
End If
Wend
End Sub
Private Sub Command2_Click()
bStop = True
End Sub
Private Sub Form_Load()
For i = 1 To 370
n(i) = 0
Next
j = 0
bStop = False
End Sub
物理大腕的意见:
可以这样设计:
先产生一个具有所有元素的数组:
例如:
dim A(370) as integer
for i=1 to 370
A(i)=i
next
然后逐个随机交换,就是第1个和随机的某个元素交换。然后第2个和随机的某个元素交换...........
最后得到随机不重复的数列,这样,你需要几个不重复的随机数都可以从开头取。
Spencer Yang的意见:
请到纪文和网站『VB入门网』
http://www.vbguide.com.tw/webback.asp
看看「个个击破」 单元中的
---------------------------------------
380 如何产生没有重复的乱数 (Non-Repeating Random)
此问题由李海回答。
附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 其他方面, 。
|