VB生成不重复的随机数
发布网友
发布时间:2022-04-23 13:09
我来回答
共2个回答
热心网友
时间:2023-06-26 22:40
我的建议是:第一步、先做一个数组,存上这35个数(可以不是连续的数,也可以是人名、字符串什么的);第二步、随机生成一个1-35之间的数,输出;第三步:把这个数和数组的第一个单元交换;第四步、从数组的第2-35之间随机抽取第二个数,输出;第五步、把这随机抽取的第二个数和数组的第二个单元内容呼唤;第六步、随机抽取第三个数,输出。。。。。重复到从第35-35个数之间随机抽取一个数,这时直接输出最后一个就行了。
程序如下(VB6):
工程里默认的窗体上,画一个Command1,粘贴程序:
option explicit
private vArray(1 to 35) as currency '定义数组个数
private sub command1_click()
test
end sub
private sub InitArray()
dim i as long
'给数组赋值
for i=1 to 35
varray(i)=i
next i
end sub
private sub Test()
dim iStart as long
dim iPos as long
dim vTemp as currency
dim sReturn as string
InitArray
randomize timer '设置随机因子,使其每次运行程序的随机数都不一样
iStart=1
do
iPos=int(rnd*(ubound(vArray)-iStart+1))+iStart '产生iStart到35(35取自vArray的上标)之间的整数
sReturn=sReturn & vArray(iPos) & vbcrlf '输出
'交换单元内容
vTemp=vArray(iStart)
vArray(iStart)=vArray(iPos)
vArray(iPos)=vTemp
iStart=iStart+1 '下次随机生成时,少生成一个
if iStart>=ubound(vArray) then
'最后一个了,直接输出
sReturn=sReturn & vArray(ubound(vArray))
Exit Do
end if
if iStart>7 then exit do '如果需要生成几个数,就把7改成几,大于数组元素的个数,将输出速度的元素个数(这个例子是35)
Loop
msgbox sReturn 'msgbox 输出结果
end sub
程序是直接在网页上写的,没有调试,如果有问题可以来信 cuidong@vip.163.com
热心网友
时间:2023-06-26 22:41
Private Sub Form_Click()
Dim num, sum
Randomize
sum = ""
For i = 1 To 7
num = Int(Rnd() * 35 + 1)
sum = sum & Space(3) & num
Next i
Print sum
End Sub
注:此代码在VB程序上运作正常。定义两个变量,num接收每一次随机生成的数,然后把每次生成的数链接起来存储到变量sum里。
Randomize 避免生成重复数字
rnd()随机生成函数,int取整函数
space()生成空格