vb 乱数生成问题!!! 急!!!

来源:百度知道 编辑:UC知道 时间:2024/05/21 09:44:24
Dim y(24) As Integer
dim p as integer

sub form_load()
Dim n As Integer, a As Integer, b As Integer, c As Integer
p=0
For n = 0 To 24
y(n) = n
Next

For n = 0 To 155
a = Int(Rnd * 25)
b = Int(Rnd * 25)
c = y(a): y(a) = y(b): y(b) = c
Next
end sub

sub com1_click()
msgbox y(p)
p=p+1
if p>ubound(y) then end
end sub

以上的程序是会产生0~24之间的乱数,当出现25后自动关闭程序,
请问我要怎样那裏的数值,才能自己定义乱数范围(1~n)和当出现n次后自动关闭程序??

好急哦!!请各位大侠帮帮忙!!!谢谢!!

For n = 0 To 155
a = Int(Rnd * 25)
b = Int(Rnd * 25)
c = y(a): y(a) = y(b): y(b) = c
Next

1.你说的乱数范围(1-n).想实现任意的n值,把这里的25改成你要的n值就行了.Rnd生成的是0-1之间的随机数.用Rnd*25,值就在0-25之间
2.你说的出现n次关闭.这个n是这里的155,这里数组进行156次任意两值交换.

所以你的代码改为这样就可以了:
const MaxValue = 25 ' 乱数范围n的定义,可改任意值
const MaxCount = 155 ' 交换次数n的定义,可改任意值
Dim y() As Integer
redim y(0 to (MaxValue-1)) as integer
dim p as integer

sub form_load()
Dim n As Integer, a As Integer, b As Integer, c As Integer
p=0
For n = 0 To MaxValue-1
y(n) = n
Next

For n = 0 To MaxCount
a = Int(Rnd * MaxValue)
b = Int(Rnd * MaxValue)
c = y(a): y(a) = y(b): y(b) = c
Next
end sub

sub com1_click()
msgbox y(p)
p=p+1
if p>ubound(y) then end
end sub

不是很明白你需要做什么,但对于你提的那两个:
1.如果控制随机数在1~N范围内:应该是: int(rnd * n) + 1
2.当出现N次还是出现N的时候关闭程序??